當 Linux 指令取得多個檔案作為輸入。是否有任何命令/技巧可以將命令分成stdout
幾個部分。每個文件一個?那麼,哪些行屬於哪個文件就變得一目了然了呢?
例如,當cat
、grep
、sed
、sort
、 、等指令tail
取得多個檔案作為輸入。一般來說,他們在 上連續列印結果stdout
,但我想將結果分成幾部分。每個輸入檔一個
我不想將結果分割成文件,或按照中要求的行數分割它這個問題。我發現最接近它的是用find -print -exec command
它所解釋的這裡。但仍然不完全是我想要的。
假設我的命令適用於file1
、file2
和file3
, 作為輸入,並列印以下內容:
line1 of file1
line2 of file1
line3 of file1
line1 of file2
line2 of file2
line3 of file2
line1 of file3
line2 of file3
line3 of file3
我希望輸出的格式類似於以下內容,因此當我觀察到我在文件中查找的內容時,我可以跳到下一個文件:
>>> file1 <<<
line1 of file1
line2 of file1
line3 of file1
----------------
>>> file2 <<<
line1 of file2
line2 of file2
line3 of file2
----------------
>>> file3 <<<
line1 of file3
line2 of file3
line3 of file3
提前致謝。
答案1
如果您除了按文件排序之外不關心行的順序,則可以使用排序來完成此操作,方法是在每行前面加上 id 例如。
file1: line1
file2: line1
file1: line2
然後你可以透過排序管道結果:
$ ( process-file1 & process-file2 & ); wait | sort
file1: line1
file1: line2
file2: line1
當然,您也可以使用這種方法添加行號 - 然後只需使用“sort -n”。
要將其處理為您想要的確切格式,您可以使用 awk 建立腳本來剝離前面的部分並將其轉換為標題。