文件内容如下:
$ cat test1.txt
10000042 1 无 0 0 0
10000042 2 无 0 0 0
10000073 1 无 0 0 0
10000073 2 无 0 0 0
10000133 1 无 0 0 0
10000133 2 无 0 0 0
10000156 1 无 0 0 0
10000156 2 无 0 0 0
10000254 1 弱 0.0991 13203,11791 100,189
10000254 2 无 0 0 0
10000256 1 无 0 0 0
10000256 2 无 0 0 0
10000313 1 有 1.0 13781,13581 4,0
10000313 2 无 0 0 0
10000364 1 无 0 0 0
-
想筛选文件中第二列内容为’1’的所有列,并输出文件名’test2.txt’。可以采用awk命令:awk ‘$2 == 1 {print}’ test1.txt >test2.txt
注:awk 命令中$n 代表第n列,{print}代表输出哪些列,默认全输出。$ awk '$2 == 1 {print}' test1.txt >test2.txt $ cat test2.txt 10000042 1 无 0 0 0 10000073 1 无 0 0 0 10000133 1 无 0 0 0 10000156 1 无 0 0 0 10000254 1 弱 0.0991 13203,11791 100,189 10000256 1 无 0 0 0 10000313 1 有 1.0 13781,13581 4,0 10000364 1 无 0 0 0
-
输出指定列,例如第2、3、5列
$ awk '$2 ==1 {print $2,$3,$5}' test1.txt > test3.txt $ cat test3.txt 1 无 0 1 无 0 1 无 0 1 无 0 1 弱 13203,11791 1 无 0 1 有 13781,13581 1 无 0
-
如果不想输出一个新文件,只是想统计一下筛选结果行数,可以使用管道增加’wc -l’命令
$ awk '$2 == 1 {print}' test1.txt |wc -l 8
AWK 官方手册
如有不妥,请指示正,谢谢阅读!
作者:togetlife