Cut

我可以使用單個剪切命令為輸入文件的兩個欄位創建兩個輸出文件嗎?

  • December 12, 2016

我可以編寫一個 shell 腳本來循環執行它,但是是否有使用終端的單行解決方案?

不是一個cut命令。你可以這樣做awk

awk -F '\t' '{print $1 > "file1"; print $2 > "file2"}' < file

或者對於每個領域:

awk -F '\t' '{for (i = 1; i <= NF; i++) print $i > "file" i}' < file

或者為了避免兩次讀取文件,使用管道和 2 次cut呼叫,使用支持程序替換的 shell,如 AT&T ksh、zsh 或 bash:

< file tee >(cut -f2 > file2) | cut -f1 > file1

請注意,ksh不要bash等待命令cut在程序替換中執行,因此在這些 shell 中,file2在您執行下一個命令時可能尚未完成。

引用自:https://unix.stackexchange.com/questions/329777