`awk` कमांड का उपयोग करके कई प्रकार के कॉलम कैसे प्रिंट करें?

How Print Range Columns Using Awk Command

`awk` कमांड कई कमांडों में से एक है जिसका उपयोग लिनक्स में सारणीबद्ध डेटा से कई कॉलम को प्रिंट करने के लिए किया जा सकता है। `awk` स्क्रिप्ट फ़ाइल को निष्पादित करके टर्मिनल से सीधे `awk` कमांड का उपयोग किया जा सकता है। इस ट्यूटोरियल में, हम आपको दिखाएंगे कि टेबल डेटा से कॉलम की एक श्रृंखला को कैसे प्रिंट किया जाए।

उदाहरण 1: कमांड आउटपुट से कई कॉलम प्रिंट करें

निम्न आदेश कमांड आउटपुट से दूसरे, तीसरे और चौथे कॉलम को प्रिंट करेगा, 'एलएस-एल' '। यहां, कॉलम नंबर स्पष्ट रूप से बताए गए हैं, लेकिन कॉलम की समान श्रेणी को प्रिंट करने के लिए एक अधिक कुशल कमांड अगले उदाहरण में दिखाया गया है।







$रास -NS | awk '{प्रिंट $2, $3, $4}'

निम्नलिखित आउटपुट ऊपर दिए गए कमांड द्वारा निर्मित होता है।





उदाहरण 2: किसी फ़ाइल से स्तंभों की श्रेणी को a . का उपयोग करके प्रिंट करें के लिये कुंडली

इस उदाहरण और इस ट्यूटोरियल के अन्य उदाहरणों का अनुसरण करने के लिए, नाम की एक टेक्स्ट फ़ाइल बनाएं मार्क्स.txt निम्नलिखित सामग्री के साथ :





आईडी CSE203 CSE102 CSE202
११०९ ७८ 87 79
११६७ 67 ८१ 70
११९० 56 ६१ 69
११५६ 89 55 ७८
199 54 66 58

निम्न `awk` कमांड marks.txt के पहले तीन कॉलम प्रिंट करेगा। NS के लिये लूप का उपयोग कॉलम मानों को प्रिंट करने के लिए किया जाता है, और लूप में तीन चरण शामिल होते हैं। NS एनएफ चर फ़ाइल के फ़ील्ड या कॉलम की कुल संख्या को इंगित करता है।

$बिल्लीमार्क्स.txt
$awk '{के लिए(i=1;i<=NF-1;i++) printf $i' '; print ''}'मार्क्स.txt

कमांड चलाकर निम्न आउटपुट तैयार किया जाएगा। आउटपुट छात्र को दिखाता है आईडी और के लिए निशान सीएसई२०३ तथा सीएसई102 .



उदाहरण 3: आरंभिक और समाप्ति चर को परिभाषित करके स्तंभों की श्रेणी मुद्रित करें

निम्नलिखित `awk` कमांड कमांड आउटपुट 'ls -l' से पहले तीन कॉलम को इनिशियलाइज़ करके प्रिंट करेगा शुरुआत तथा समापन चर। यहाँ, का मान शुरुआत चर 1 है, और का मान समापन चर 3 है। इन चरों को स्तंभ मानों को मुद्रित करने के लिए लूप के लिए पुनरावृत्त किया जाता है।

$रास -NS | awk ' शुरू {पहला = 1; अंतिम = 3}
{के लिए (मैं = पहले; मैं

कमांड चलाने के बाद निम्न आउटपुट दिखाई देगा। आउटपुट आउटपुट के पहले तीन कॉलम मान दिखाता है, 'ls -l'।

उदाहरण 4: फ़ॉर्मेटिंग वाली फ़ाइल से कई कॉलम प्रिंट करें

निम्नलिखित `awk` कमांड के पहले तीन कॉलम प्रिंट करेगा मार्क्स.txt का उपयोग करते हुए printf और आउटपुट फील्ड सेपरेटर ( ओएफएस ) यहां, लूप के लिए तीन चरण शामिल हैं, और फ़ाइल से अनुक्रम में तीन कॉलम मुद्रित किए जाएंगे। ओएफएस स्तंभों के बीच स्थान जोड़ने के लिए यहां उपयोग किया जाता है। जब लूप का काउंटर वैल्यू (i) बराबर होता है समापन चर, फिर एक नई लाइन ( n) उत्पन्न होती है।

$बिल्लीमार्क्स.txt
$awk -वी प्रारंभ=1 -वी समाप्त=3 '{के लिए (i=शुरू; i<=end;i++) printf('%s%s',
$i,(i==end) ? ' ': ओएफएस)}'
मार्क्स.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट उत्पन्न होगा।

उदाहरण 5: सशर्त विवरण का उपयोग करके किसी फ़ाइल से स्तंभों की श्रेणी मुद्रित करें

निम्न `awk` कमांड एक लूप और एक if स्टेटमेंट का उपयोग करके फ़ाइल से पहले और आखिरी कॉलम को प्रिंट करेगा। यहां, लूप के लिए चार चरण शामिल हैं। NS शुरुआत तथा समापन यदि स्थिति का उपयोग करके फ़ाइल से दूसरे और तीसरे कॉलम को छोड़ने के लिए स्क्रिप्ट में चर का उपयोग किया जाता है। ओएफएस चर का उपयोग स्तंभों के बीच स्थान जोड़ने के लिए किया जाता है, और ओआरएस चर का उपयोग अंतिम कॉलम को प्रिंट करने के बाद एक नई लाइन ( n) जोड़ने के लिए किया जाता है।

$बिल्लीमार्क्स.txt
$awk -वी प्रारंभ=2 -वी समाप्त=3 '{ के लिए (i=1; i<=NF;i++)
अगर (i> = प्रारंभ करें && i<=end) continue;
और प्रिंटफ('%s%s', $i,(i!=NF) ? OFS: ORS)}'
मार्क्स.txt

उपरोक्त आदेशों को चलाने के बाद निम्न आउटपुट दिखाई देगा। आउटपुट marks.txt का पहला और आखिरी कॉलम दिखाता है।

उदाहरण 6: NF चर का उपयोग करके किसी फ़ाइल से स्तंभों की श्रेणी को प्रिंट करें

निम्न `awk` कमांड NF चर का उपयोग करके फ़ाइल से पहले और अंतिम कॉलम को प्रिंट करेगा। कॉलम वैल्यू को प्रिंट करने के लिए किसी लूप या कंडीशनल स्टेटमेंट का उपयोग नहीं किया जाता है। NF क्षेत्रों की संख्या को इंगित करता है। Marks.txt में चार कॉलम होते हैं। $(NF-3) पहले कॉलम को परिभाषित करता है, और $NF अंतिम कॉलम को इंगित करता है।

$बिल्लीमार्क्स.txt
$awk '{प्रिंट $(NF-3)' '$NF}'मार्क्स.txt

उपरोक्त आदेशों को चलाकर निम्न आउटपुट का उत्पादन किया जाता है। आउटपुट marks.txt का पहला और आखिरी कॉलम दिखाता है।

उदाहरण 7: सबस्ट्र () और इंडेक्स () का उपयोग करके किसी फ़ाइल से कॉलम की श्रेणी को प्रिंट करें

यदि दूसरा तर्क मान पहले तर्क मान में मौजूद है, तो अनुक्रमणिका () फ़ंक्शन एक स्थिति देता है। सबस्ट्र () फ़ंक्शन तीन तर्क ले सकता है। पहला तर्क एक स्ट्रिंग मान है, दूसरा तर्क प्रारंभिक स्थिति है, और तीसरा तर्क लंबाई है। निम्नलिखित कमांड में सबस्ट्र () का तीसरा तर्क छोड़ा गया है। क्योंकि कॉलम `awk` कमांड में $1 से शुरू होता है, इंडेक्स () फ़ंक्शन $3 लौटाएगा, और कमांड $3 से $4 तक प्रिंट होगा।

$बिल्लीमार्क्स.txt
$awk '{प्रिंट सबस्ट्र ($0,इंडेक्स($0,$3))}'मार्क्स.txt

उपरोक्त आदेशों को चलाकर निम्न आउटपुट का उत्पादन किया जाएगा।

उदाहरण 8: प्रिंटफ का उपयोग करके किसी फ़ाइल से स्तंभों की श्रेणी को क्रमिक रूप से प्रिंट करें

निम्नलिखित `awk` कमांड 10 वर्णों के लिए पर्याप्त स्थान निर्धारित करके, marks.txt के पहले, दूसरे और तीसरे कॉलम को प्रिंट करेगा।

$बिल्लीमार्क्स.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'मार्क्स.txt

उपरोक्त आदेशों को चलाकर निम्न आउटपुट का उत्पादन किया जाएगा।

निष्कर्ष

कमांड आउटपुट या फ़ाइल से कॉलम की श्रेणी को प्रिंट करने के कई तरीके हैं। यह ट्यूटोरियल दिखाता है कि कैसे `awk` कमांड लिनक्स उपयोगकर्ताओं को सारणीबद्ध डेटा से सामग्री प्रिंट करने में मदद कर सकता है।