使用基于输入文件第一列模数的awk拆分文件

时间:2013-12-09 07:04:08

标签: shell awk

我有一个包含以下数据集的输入文件 -

1234567,1234444,34567
2345678,9878979,54354
1222222,8763481,89374
3444444,8978979,78346

我想根据输入文件中定义的第一列的模数(10)拆分此文件。所以我想将所有属于set的数据(与mod匹配)分组并将其放入新文件中。 所以对于这个输入数据, 我想要四个不同的文件。输出名称必须类似于 -

File 1 - output2.txt
1222222,8763481,89374
File 2 - output4.txt
3444444,8978979,78346

等等。

你能帮我提供一个执行此操作的awk语句吗?

2 个答案:

答案 0 :(得分:1)

使用awk,您可以使用%模数运算符:

$ awk '{print > $1%10}' file

您还可以在文件名中添加一些文字:

$ awk '{print > "output"$1%10".txt"}' file

在我的情况下,它会生成:

$ls
output2.txt  output4.txt  output7.txt  output8.txt

例如file2如下:

$ cat output2.txt
1222222,8763481,89374

答案 1 :(得分:0)

grep会做

grep '^[0-9]*2,' your_file > output2.txt
grep '^[0-9]*4,' your_file > output4.txt

awk版

awk '/^[0-9]*2,/' your_file > output2.txt