Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 基于输入文件第一列的模数,使用awk拆分文件_Shell_Awk - Fatal编程技术网

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

Shell 基于输入文件第一列的模数,使用awk拆分文件,shell,awk,Shell,Awk,我有一个具有以下数据集的输入文件- 1234567,1234444,34567 2345678,9878979,54354 1222222,8763481,89374 3444444,8978979,78346 我想根据输入文件中定义的第一列的模数(10)拆分此文件。所以我想把所有属于set(与mod匹配)的数据分组,并将其放入新文件中。 所以对于这个输入数据, 我想要四个不同的文件。输出名称必须类似于- File 1 - output2.txt 1222222,8763481,89374 F

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

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语句吗?

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

使用
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