強制輸出字段的順序我想要做這樣的事情:從剪切命令
cat abcd.txt | cut -f 2,1
和我想要的順序爲2,然後在輸出1。在我測試的機器上(FreeBSD 6),這沒有發生(它的打印順序是1,2)。你能告訴我如何做到這一點?
我知道我總是可以編寫一個shell腳本來完成這個反轉操作,但我正在尋找使用'cut'命令選項的東西。
我想我使用的coreutils包含剪切版本5.2.1。
強制輸出字段的順序我想要做這樣的事情:從剪切命令
cat abcd.txt | cut -f 2,1
和我想要的順序爲2,然後在輸出1。在我測試的機器上(FreeBSD 6),這沒有發生(它的打印順序是1,2)。你能告訴我如何做到這一點?
我知道我總是可以編寫一個shell腳本來完成這個反轉操作,但我正在尋找使用'cut'命令選項的東西。
我想我使用的coreutils包含剪切版本5.2.1。
這不能用cut來完成。根據手冊頁:
所選輸入的寫入順序與讀取的順序相同,只寫一次。
相反,你可以使用AWK,這樣做:
awk '{print($2,"\t",$1)}' abcd.txt
與你使用的字段分隔符任何替換\噸。
拉爾斯的回答非常好,但我發現了一個更好的答案。與他的問題是它不匹配列。爲了解決這個問題使用下列內容:
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
在Cygwin的我與替換-F 「\ t」 的 - 不要做這個工作。 – 2013-07-18 11:39:57