如何使用grep去除日志中匹配com.a的重复行,获取所有唯一匹配结果
grep匹配去重实现方案
原命令问题说明
你使用的grep -m1 'com.a' filename中,-m1参数的作用是匹配到第一条符合规则的行后直接终止运行,因此只会输出第一条com.ab,无法返回所有不同的匹配结果。
可直接使用的实现命令
以上方案均会输出你需要的去重结果:
com.ab com.ac com.ad
方案一:grep搭配去重工具(兼容性最强,推荐使用)
先通过grep过滤所有匹配com.a规则的行,再去重:
- 不要求保留原始出现顺序时,用sort+uniq去重:
grep 'com.a' filename | sort | uniq - 要求保留不同匹配项的首次出现顺序时,用awk去重:
grep 'com.a' filename | awk '!seen[$0]++'
方案二:纯grep实现(仅支持GNU grep环境)
如果不允许借助其他工具,仅用grep可以用以下命令实现:
grep -m1 -Ff <(grep 'com.a' filename | sort -u) filename
内容的提问来源于stack exchange,提问作者t j6789
相关产品推荐
相关产品推荐

