如何 grep 查找具有相同编号的行,既需要又不需要

如何 grep 查找具有相同编号的行,既需要又不需要

这根本不容易解释,但很容易展示。

我在文件中有如下几行:

100Dollars              3              IP  
200Dollars              3              IP
300Dollars              4              IP

我需要 grep 查找第二列中没有“3”的行。我尝试了以下操作:

egrep -v '3' filename

但是由于第一部分有 3,因此不会返回第三行。这是我的基本问题,不知道这是否有意义。

我如何排除第一列中的内容并仅 grep 第二列中的内容?

答案1

你不能只这样做吗grep -v " 3 ",假设列是由空格分隔的?

答案2

怎么样:

awk '$2 != 3' filename

答案3

我认为你想升级到 awk 或 grep,它可以执行列操作(以及许多其他操作)

gawk '$1 ~ /3/ && $2 !~ /3/{print $0}' < filename

應該做。

这将查找第一列中的 3(在 awk 中,列从 1 开始编号,$0 是整行)并且第二列中的数字不是 3,如果是,则打印整行 ($0)

答案4

您可以使用:

grep -v -P '\t3\t' filename

-P是一个 perl 风格的正则表达式匹配器。

相关内容