使用shell指令將一個檔案分成多個文件

使用shell指令將一個檔案分成多個文件

我想將我的文件分成幾個文件。

下面是我擁有的文件。

sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5

我想將文件分成以下幾個部分

文件1

sort a # 3|4
sort a # 2|5

文件2

sort b # 1|2
sort b # 2|5

正如你所看到的,我根據第二列對它們進行了劃分。由於第二列有許多不同的值,因此需要花費大量時間以費力的方式劃分文件。這個問題如何實現呢?

答案1

AWK解決方案:

awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
  • !a[$2]++- 檢查是否遇到唯一的第二個欄位值,並$2利用它作為陣列的索引a。僅在唯一值第一次出現時!a[$2]++評估條件true$2
  • fn="file"++c- 生成檔案名稱帶遞增後綴++c

查看結果:

$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5

==> file2 <==
sort b # 1|2
sort b # 2|5

答案2

split -l 2 test

這將產生 2 個分割檔。分割文件的輸出:

$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5

相關內容