这根本不容易解释,但很容易展示。
我在文件中有如下几行:
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 风格的正则表达式匹配器。