我有一个用逗号分隔的 CSV 文件。我想通过具有确切信息的第二列进行选择"stringPattern"
我试过了:
grep -w "stringPattern"
但它仍然会获取包含字符串 Pattern 的任何字符串。
执行此操作的 awk 方法是什么?
awk '$2=="stringPattern"' FS=,
请注意,这是完全匹配,而不是正则表达式。如果你想要一个正则表达式,你可以这样做:
$2 ~ /stringPattern/
awk -F, '$2 == "stringPattern" < filename
聚会有点晚了,但是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
这可能不是你想要的。:-/
grep -E '^[^,]+,stringPattern,' file