如何grep完全匹配?

时间:2013-08-21 23:37:38

标签: awk grep

我有一个用逗号分隔的CSV文件。我想选择具有完全"stringPattern"

的第二列

我试过了:

grep -w "stringPattern"

但它仍然会获得包含字符串Pattern的任何字符串。

这样做的方法是什么?

4 个答案:

答案 0 :(得分:3)

awk '$2=="stringPattern"' FS=,

请注意,这是完全匹配,而不是正则表达式。如果你想要一个正则表达式,你可以这样做:

$2 ~ /stringPattern/

答案 1 :(得分:3)

awk -F, '$2 == "stringPattern" < filename

答案 2 :(得分:0)

grep -E '^[^,]+,stringPattern,' file

答案 3 :(得分:0)

派对有点晚了,但 grep 还有一个可能有用的选项......: - )

来自 grep 联机帮助页:

-o, --only-matching
          Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

让我们制作一个小样本文件;

$ echo -e "col1,col2,col3\npattern1,pattern2,pattern3" > file.csv

现在让我们搜索模式,只有 -w 选项

$ grep --color=always -w "pattern2" file.csv
pattern1,pattern2,pattern3

现在让我们使用 -w -o

搜索模式
$ grep --color=always -ow "pattern2" file.csv
pattern2

现在只返回完全匹配。 : - )

...但是如果模式在同一行上“重复”怎么办?

让我们更新样本文件并重复上一次搜索;

$ echo -e "col1,col2,col3,col4\npattern1,pattern2,pattern3,pattern2" > file.csv

现在搜索返回两个结果 - 但是在另一行

$ grep --color=always -ow "pattern2" file.csv
pattern2
pattern2

这可能是你想要的。 : - /