
我想將我的文件分成幾個文件。
下面是我擁有的文件。
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