2013-05-06 7 views
5

में अनछुए शेष पंक्ति को छोड़ दें, मैं टेक्स्ट फ़ाइल में पहले तीन फ़ील्ड को निकालने के लिए अजीब उपयोग करने का प्रयास कर रहा हूं। पहले तीन क्षेत्रों को हटाने में आसान है। लेकिन लाइन के बाकी awk द्वारा गड़बड़ हो जाता है ऊपर: सीमांकक टैब से अंतरिक्षपहले कॉलम निकालें, फिर

यहाँ करने के लिए बदल रहे हैं कि मैं क्या कोशिश की है:

head pivot.threeb.tsv | awk 'BEGIN {IFS="\t"} {$1=$2=$3=""; print }' 

पहले तीन स्तंभों ठीक से निकाल दिए जाते हैं। समस्या यह है कि आउटपुट कॉलम में $ 4 $ 5 $ 6 आदि के बीच टैब के साथ समाप्त होता है।

+1

कोई चर awk में "भारतीय विदेश सेवा" नाम है। खोल में आईएफएस है, अजीब एफएस है। –

उत्तर

5

पहली बार ईडी टिप्पणी के रूप में, आपको FS का उपयोग क्षेत्र में विभाजक के रूप में करना होगा। tab आपके आउटपुट में space बन गया है, क्योंकि आपने OFS को परिभाषित नहीं किया है।

awk 'BEGIN{FS=OFS="\t"}{$1=$2=$3="";print}' file 

यह पहली 3 फ़ील्ड निकालें, और बाकी पाठ छोड़ "अछूता" (आप अग्रणी 3 टैब दिखाई देंगे) होगा। उत्पादन में भी <tab> रखा जाएगा।

awk 'BEGIN{FS=OFS="\t"}{print $4,$5,$6}' file 

अग्रणी रिक्त स्थान/टैब के बिना आउटपुट होगा। लेकिन अगर आपके पास 500 कॉलम हैं तो आपको इसे लूप में करना होगा, या उदाहरण के लिए sub फ़ंक्शन का उपयोग करें या अन्य टूल पर विचार करें, उदाहरण के लिए।

3

आप नहीं चाहते हैं क्षेत्र जुदाई तो बदल का उपयोग sed बजाय पहले 3 स्तंभों को निकालने के लिए:

:

sed -r 's/(\S+\s+){3}//' file 

परिवर्तन वापस फाइल करने के लिए स्टोर करने के लिए आप -i विकल्प का उपयोग कर सकते हैं

sed -ri 's/(\S+\s+){3}//' file 
4

वास्तव में इस इस तरह एक बहुत ही सरल कटौती आदेश में किया जा सकता:

cut -f4- inFile 
+0

मेरी इच्छा है कि यह buffered नहीं था। – Nakilon

0
awk '{for (i=4; i<NF; i++) printf $i " "; print $NF}' 
+0

यह विफल रहता है यदि अंतिम कॉलम में –

+0

नामों में डबल स्पेस है, तो यह किसी भी लाइन पर चार से कम फ़ील्ड होने पर अपेक्षित आउटपुट उत्पन्न करने में विफल रहता है। (यह सभी को हटाने के बजाए आखिरी बार प्रिंट करेगा।) इसके बजाय आप इसका उपयोग कर सकते हैं: 'awk' {for (i = 4; i <= NF; i ++) printf $ i ""; printf "\ n"} '' या पीछे की जगह को रोकने के लिए कुछ अतिरिक्त तर्क जोड़ें। – Wildcard

संबंधित मुद्दे