我有一个用逗号分隔的CSV文件。我想选择具有完全"stringPattern"
我试过了:
grep -w "stringPattern"
但它仍然会获得包含字符串Pattern的任何字符串。
这样做的方法是什么?
答案 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
这可能不是你想要的。 : - /