2009-06-24 22 views
25

से उत्पादन क्षेत्रों के आदेश जबरदस्ती मैं इस तरह कुछ करना चाहता हूँ:कटौती आदेश

cat abcd.txt | cut -f 2,1 

और मैं आदेश 2 और उसके बाद उत्पादन में 1 होना चाहता हूँ। मशीन पर मैं परीक्षण कर रहा हूं (फ्रीबीएसडी 6), यह नहीं हो रहा है (इसकी प्रिंटिंग 1,2 ऑर्डर में है)। क्या आप मुझे बता सकते हैं कि यह कैसे करें?

मैं जानता हूँ कि मैं हमेशा इस पीछे करने के लिए एक खोल स्क्रिप्ट लिख सकते हैं, लेकिन मैं 'काट' कमांड विकल्पों का उपयोग कर कुछ के लिए देख रहा हूँ।

मुझे लगता है मैं कटौती युक्त coreutils के संस्करण 5.2.1 का उपयोग कर रहा हूँ।

उत्तर

27

यह का उपयोग नहीं किया जा सकता है काटा। आदमी पेज के अनुसार:

चयनित इनपुट उसी क्रम में लिखा है कि यह पढ़ने के लिए है, और वास्तव में एक बार लिखा है।

इसके बजाय, आप यह awk उपयोग करते हुए, इस तरह कर सकते हैं:

awk '{print($2,"\t",$1)}' abcd.txt 

आप क्षेत्र विभाजक के रूप में उपयोग कर रहे हैं जो कुछ भी साथ \ t बदलें।

11

लार्स का जवाब बहुत अच्छा था लेकिन मुझे एक बेहतर भी मिला। उसके साथ मुद्दा यह है कि यह कॉलम के रूप में \ t \ t से मेल खाता है।

awk -v OFS=" " -F"\t" '{print $2, $1}' abcd.txt 

कहाँ:

-F"\t" क्या बिल्कुल (टैब) पर कटौती करने के लिए है इस प्रयोग के निम्नलिखित ठीक करने के लिए।

echo 'A\tB\t\tD' | awk -v OFS=" " -F"\t" '{print $2, $4, $1, $3}' 

यह आउटपुट:

-v OFS=" " क्या साथ (दो रिक्त स्थान) अलग करने के

उदाहरण है

B D A  
+1

Cygwin में मैं बदलने के लिए -f "\ t" के साथ किया था - इस काम को करने के लिए एफ \ टी। –

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