स्ट्रिंग को एक सरणी में विभाजित करने के लिए awk
हम फ़ंक्शन का उपयोग करते हैं split()
:
awk '{split($0, a, ":")}'
# ^^ ^ ^^^
# | | |
# string | delimiter
# |
# array to store the pieces
यदि कोई विभाजक नहीं दिया गया है, तो FS
वह अंतरिक्ष का उपयोग करता है , जो अंतरिक्ष में चूक करता है:
$ awk '{split($0, a); print a[2]}' <<< "a:b c:d e"
c:d
हम एक विभाजक दे सकते हैं, उदाहरण के लिए :
:
$ awk '{split($0, a, ":"); print a[2]}' <<< "a:b c:d e"
b c
जो इसे के माध्यम से स्थापित करने के बराबर है FS
:
$ awk -F: '{split($0, a); print a[1]}' <<< "a:b c:d e"
b c
Gawk में आप विभाजक को regexp भी प्रदान कर सकते हैं:
$ awk '{split($0, a, ":*"); print a[2]}' <<< "a:::b c::d e" #note multiple :
b c
और यह भी देखें कि इसके चौथे पैरामीटर का उपयोग करके सीमांकक हर कदम पर क्या था:
$ awk '{split($0, a, ":*", sep); print a[2]; print sep[1]}' <<< "a:::b c::d e"
b c
:::
चलिए GNU awk के मैन पेज को उद्धृत करते हैं :
विभाजन (स्ट्रिंग, सरणी [, फ़ील्ड्स [, सेप्स]])
फूट डालो स्ट्रिंग टुकड़ों में से अलग कर दिया fieldsep और में टुकड़े की दुकान सरणी में और विभाजक तार SEPs सरणी। पहला टुकड़ा में संग्रहीत किया जाता है array[1]
, दूसरा टुकड़ा अंदर array[2]
और आगे। तीसरे तर्क का स्ट्रिंग मान, फ़ील्डेप , एक रेगीक्सप है जिसमें यह वर्णन किया गया है कि स्ट्रिंग को कहाँ विभाजित किया जाए (जितना कि एफएस एक रेगीक्सपी हो सकता है , यह वर्णन करते हुए कि इनपुट रिकॉर्ड को कहाँ विभाजित किया जाए)। यदि फ़ील्डेप को छोड़ दिया जाता है, तो FS का मान उपयोग किया जाता है। split()
बनाए गए तत्वों की संख्या लौटाता है। सेप्स एक gawk
एक्सटेंशन है, जिसके seps[i]
बीच विभाजक स्ट्रिंग हैarray[i]
और array[i+1]
। यदि फ़ील्ड्स एक एकल स्थान है, तो कोई भी प्रमुख व्हाट्सएप में चला जाता है seps[0]
और किसी भी अनुगामी व्हाट्सएप में चला जाता है seps[n]
, जहां n का रिटर्न मान है split()
(अर्थात, सरणी में तत्वों की संख्या)।
OFS
, तो उनके बीच अल्पविराम,print
उन्हें अलग-अलग तर्क के रूप में देखें।