-1

没有 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

如果第三行不为零,如何在一个语句中完全删除该行?这在unix中可能吗?

4

4 回答 4

1

假设问题实际上是在询问“如果第三列为非零,则不要打印它”或(等效地)“仅在第三列为 0 时打印该行”:

使用awk

awk '$3 == 0' data

(如果第三列为零,则打印输入;否则,忽略它。您可以在{ print }之后添加0以使操作显式。)

使用perl

perl -nae 'print if $F[2] == 0' data

使用sed

sed -n '/ 0$/p' data
于 2013-02-21T07:20:49.593 回答
0

使用 grep:

grep '[^0-9]0$' input 
于 2013-02-21T07:30:30.430 回答
0

如果您希望打印没有第三列的行以及明确显示第三列的行0(即,如果您认为空白字段为零),请尝试:

awk '!$3'

如果您不想打印只有 2 列的行,请尝试:

awk 'NF>2 && !$3'
于 2013-02-21T07:40:00.300 回答
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
> 
于 2013-02-21T07:36:09.793 回答