來自 CLI 的 Merge 文字文件,具有排序順序和根目錄

來自 CLI 的 Merge 文字文件,具有排序順序和根目錄

我有一系列 txt 文件,每個文件都有許多條目。我通常使用 cat 將所有 txt 檔案合併到一個輸出檔案中,但它變得有點混亂,因為我無法確定它來自哪個原始 txt 檔案。

我想知道是否有一種方法,使用命令行,首先按字母順序合併所有 txt 文件,同時將後綴添加到原始條目以記下它來自的文件。

例如,假設我有 2 個 txt 文件,每個文件包含三個條目:

文件一:

  Alpha
  Bravo 
  Charlie

文件_二:

  Alpha
  Bravo
  Delta

我想做的是這樣的:

  1. 將兩個清單合併到一個按字母順序排序的輸出 txt 檔案中;
  2. 添加後綴以顯示它來自哪個列表:

       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這表示兩個字串由換行符號分隔_並後跟換行符。$0FILENAME分別包含目前行和檔名。在本例中,我將文件命名為f1f2

答案2

你需要反過來做:首先添加後綴,den合併併排序:

(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort 

相關內容