यह student.txt फ़ाइल है:

RollNo|Name|Marks
123|Raghu|80
342|Maya|45
561|Gita|56
480|Mohan|71

मैं "मार्क्स" कॉलम से डेटा लाना चाहता हूं और मैंने awk कमांड का इस्तेमाल किया है

awk -F "|" '{print $3}' student.txt

और यह आउटपुट देता है जैसे

Marks
80
45
56
71

इस आउटपुट में कॉलम नाम शामिल है जो "मार्क्स" है लेकिन मैं केवल डेटा प्राप्त करना चाहता हूं और आउटपुट दिखाना चाहता हूं:

80
45
56
71
awk
2
Vikram Deokar 11 जुलाई 2020, 21:06
क्या आप कृपया सभी को बता सकते हैं कि उनके संबंधित समाधान काम करते हैं या नहीं, उनके संबंधित उत्तरों में धन्यवाद
 – 
RavinderSingh13
12 जुलाई 2020, 22:10
जब आप SO stackoverflow.com/help/someone-answers पर उपयोगी उत्तर प्राप्त करते हैं, तो आप इस बारे में यह लिंक देख सकते हैं।
 – 
RavinderSingh13
13 जुलाई 2020, 21:18

4 जवाब

क्या आप कृपया निम्नलिखित का प्रयास कर सकते हैं, इसमें Marks कीवर्ड के लिए हार्ड कोडेड फ़ील्ड नंबर नहीं है, हेडर में यह उस स्ट्रिंग की तलाश करेगा और केवल उन कॉलम को प्रिंट करेगा जो मार्क्स के नीचे हैं, इसलिए आपका मार्क्स कॉलम भी किसी भी फील्ड नंबर में है यह ठीक काम करना चाहिए। https://ideone.com/Ufq5E2 लिंक में लिखित और परीक्षण।

awk '
BEGIN{ FS="|" }
FNR==1{
  for(i=1;i<=NF;i++){
    if($i=="Marks"){ field=i }
  }
  next
}
{
  print $field
}
'  Input_file
3
RavinderSingh13 11 जुलाई 2020, 22:02

यदि इनपुट रिकॉर्ड संख्या 1 से अधिक है, तो तीसरी फ़ील्ड को प्रिंट करने के लिए अपनी awk स्क्रिप्ट में एक शर्त जोड़ें:

awk -F'|' 'FNR>1{print $3}' student.txt
3
Freddy 11 जुलाई 2020, 21:34

एक और उदाहरण:

awk -F'|' 'NR != 1 {print $3}' input_file
0
mchelabi 11 जुलाई 2020, 23:52

एक गैर-अवेक विकल्प

$ sed 1d file | cut -d\| -f3

80
45
56
71
0
karakfa 12 जुलाई 2020, 01:07