2009-06-24 95 views
25

強制輸出字段的順序我想要做這樣的事情:從剪切命令

cat abcd.txt | cut -f 2,1 

和我想要的順序爲2,然後在輸出1。在我測試的機器上(FreeBSD 6),這沒有發生(它的打印順序是1,2)。你能告訴我如何做到這一點?

我知道我總是可以編寫一個shell腳本來完成這個反轉操作,但我正在尋找使用'cut'命令選項的東西。

我想我使用的coreutils包含剪切版本5.2.1。

回答

27

這不能用cut來完成。根據手冊頁:

所選輸入的寫入順序與讀取的順序相同,只寫一次。

相反,你可以使用AWK,這樣做:

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

與你使用的字段分隔符任何替換\噸。

11

拉爾斯的回答非常好,但我發現了一個更好的答案。與他的問題是它不匹配列。爲了解決這個問題使用下列內容:

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

其中:

-F"\t"是削減正是(標籤)是什麼。

-v OFS=" "是做什麼用(兩個空格)單獨

實施例:

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

此輸出:

B D A  
+1

在Cygwin的我與替換-F 「\ t」 的 - 不要做這個工作。 – 2013-07-18 11:39:57