没有shell脚本,只需一行。什么命令可以帮助您根据列值
从一行中删除例如:
在
118 Balboni,Steve 23
11 Baker,Doug 0
120 Armas,Tony 13
133 Allanson,Andy 5
158 Baines,Harold 13
33 Bando,Chris 1
44 Adduci,James 1
50 Aguayo,Luis 3
5 Allen,Rod 0
94 Anderson,Brady 1
如果第3行不为零,如何在一个语句中完全删除该行?这在unix中是否可行?
答案 0 :(得分:1)
假设问题确实是在询问'第三列是否为非零,不打印'或(等效)'仅在第三列为0时打印行':
使用awk
:
awk '$3 == 0' data
(如果第三列为零,则打印输入;否则,请忽略它。您可以在{ print }
之后添加0
以使操作明确。)
使用perl
:
perl -nae 'print if $F[2] == 0' data
使用sed
:
sed -n '/ 0$/p' data
答案 1 :(得分:0)
使用grep:
grep '[^0-9]0$' input
答案 2 :(得分:0)
这就是替换原位。
perl -i -F -pane 'undef $_ if($F[2]!=0)' your_file
测试:
> cat temp
118 Balboni,Steve 23
11 Baker,Doug 0
120 Armas,Tony 13
133 Allanson,Andy 5
158 Baines,Harold 13
33 Bando,Chris 1
44 Adduci,James 1
50 Aguayo,Luis 3
5 Allen,Rod 0
94 Anderson,Brady 1
>
>
> perl -i -F -pane 'undef $_ if($F[2]!=0)' temp
> cat temp
11 Baker,Doug 0
5 Allen,Rod 0
>
答案 3 :(得分:0)
如果您希望打印没有第三列的行以及第3列明确0
的行(即,如果您将空白字段视为零),请尝试:
awk '!$3'
如果您不想打印只有2列的行,请尝试:
awk 'NF>2 && !$3'