linux-按列筛选文件-统计筛选结果并输出指定列-awk

文件内容如下:

$ 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. 想筛选文件中第二列内容为’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. 输出指定列,例如第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
    
  3. 如果不想输出一个新文件,只是想统计一下筛选结果行数,可以使用管道增加’wc -l’命令

    $ awk '$2 == 1 {print}' test1.txt |wc -l
    8
    

AWK 官方手册
如有不妥,请指示正,谢谢阅读!
作者:togetlife

你可能感兴趣的:(Linux)