Thursday 15 July 2010

bash - Using cut multiple times and concatenating the results using multiple delimiters? -


अगर मेरे पास एक फाइल है:

  सी 1 सी 2 सी 3 सी 4 सी 5 सी 5 सी 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  

और मैं केवल एक पंक्ति में पहले, दूसरे, चौथे और पांचवें स्तंभों को चाहता हूं, लेकिन अलग-अलग सीमांकनों द्वारा विभाजित किया जाता है ..

उदाहरण के लिए पंक्ति 1 होगा: 1; 2: 4-5 रेखा 2 होगा: 7; 8: 10-11 रेखा 3 होगी: 13; 14: 16-17

मुझे लगता है कि एक ही सीमांकक के साथ कमांड की तरह कुछ होगा:

  पेस्ट - delimiter = ':' & lt; (cut -f1 file.txt) & lt; (cut-f2 file.txt ) & Lt; (cut -f4 file.txt) & lt; (cut -f5 file.txt)  

परिणाम सरणी में होना चाहिए, ताकि प्रत्येक पंक्ति सरणी में एक अलग प्रविष्टि हो

<पूर्व> आईएफएस = '\ n'; "$ {सरणी [*]}" 1; 2: 4-5 7; 8: 10-11 13; 14: 16-17 को प्रतिध्वनित करें

मैं सोच रहा हूं कि awk सक्षम हो सकता है इसे प्राप्त करने के लिए, लेकिन मैं इसके साथ आने में असमर्थ हूं ...

awk प्रिंट करने के लिए प्रत्येक आपके द्वारा निर्दिष्ट की गई पंक्ति,

  awk '{print $ 1 ";" $ 2 ":" $ 4 "-" $ 5} 'फ़ाइल का नाम  

या, हेडर रेखा को बाहर करने के लिए,

  awk' NR & gt; 1 {प्रिंट $ 1 ";" $ 2 ":" $ 4 "-" $ 5} 'फ़ाइल का नाम  

उस परिणाम को एक बाश सरणी में प्राप्त करने के लिए:

  जबकि IFS =' \ n ' पढ़ने के लिए लाइन; सरणी + = करें ("$ line"); किया & lt; & Lt; (awk '{प्रिंट $ 1'; "$ 2": "$ 4" - "$ 5} 'फ़ाइल नाम)  

No comments:

Post a Comment