
我有一系列 txt 文件,每個文件都有許多條目。我通常使用 cat 將所有 txt 檔案合併到一個輸出檔案中,但它變得有點混亂,因為我無法確定它來自哪個原始 txt 檔案。
我想知道是否有一種方法,使用命令行,首先按字母順序合併所有 txt 文件,同時將後綴添加到原始條目以記下它來自的文件。
例如,假設我有 2 個 txt 文件,每個文件包含三個條目:
文件一:
Alpha
Bravo
Charlie
文件_二:
Alpha
Bravo
Delta
我想做的是這樣的:
- 將兩個清單合併到一個按字母順序排序的輸出 txt 檔案中;
添加後綴以顯示它來自哪個列表:
Alpha_File_One Alpha_File_Two Bravo_File_One Bravo_File_Two Charlie_File_One Delta_File_Two
這可能嗎?
答案1
正如 Florian 所說,您應該首先添加文件名,然後排序。另一種方法是使用awk
:
$ awk '{printf "%s_%s\n", $0, FILENAME}' f1 f2 | sort
Alpha_f1
Alpha_f2
Bravo_f1
Bravo_f2
Charlie_f1
Delta_f2
printf
以指定格式列印參數,%s_%s\n
這表示兩個字串由換行符號分隔_
並後跟換行符。$0
並FILENAME
分別包含目前行和檔名。在本例中,我將文件命名為f1
和f2
。
答案2
你需要反過來做:首先添加後綴,den合併併排序:
(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort