我想将我的文件分成几个文件。
下面是我拥有的文件。
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