在列中搜索确切的字符串

在列中搜索确切的字符串

我有一个文件,其中的单词在行上用“,”分隔,每行都有相同数量的单词,比如 4。所以它们的形式是:

something1,something2,something3,something4

我想精确搜索第四列中包含的行something4,但是如果存在另一行类似这样的行,我该怎么做:

something1,something2,something3,1_something4

使用 grep 我会得到这两行,但我只想要第四个元素上的行,something4我该怎么办?

答案1

您可以awk为此使用:

awk -F, '$4 == "something4"' file.csv

这应该打印第四列所在的任何行的整行something4


为了将变量传递给您,awk您需要执行以下操作:

var1=$(echo "something,something4" | cut -f2 -d,)
awk -F, -vsearch="$var1" '$4 == search' file.csv

答案2

或者,由于只有 4 列,而您希望在最后一列中提供特定的内容,

grep ',something4$' < input

(如果你真的对 grep 没问题的话就发布;awk是一个很好的解决方案)。

答案3

一般来说,对于此类问题,您可以使用cut仅获取所需的列,然后grep就可以了。

echo something1,something2,something3,something4 | cut -d , -f 4 | grep '^something4$'

相关内容