样本文件
ssdnaslcnasjkdlcnljaksjcnaslcnlasncadcadsoadsklfjewilfm Warning error ascacs
kjasdncijojencikmasklcmioewmnconmqewciomnweiocn warning
sakcjnaksldnmclkasdmnckljamnklckmalc aslenkjlansdcledlkamsc error
alscmkklamclkamscklmnaeuye error warning
我只想获取同时具有“错误”和“警告”的行。
答案1
区分大小写:
sed '/warning/!d; /error/!d' < file
或者
awk '/warning/ && /error/' < file
或者
grep warning < file | grep error
不区分大小写:
GNU
sed '/warning/I!d; /error/I!d' < file
gawk -v IGNORECASE=1 '/warning/ && /error/' < file
标准
grep -i warning < file | grep -i error
awk '{l = tolower($0)}; l ~ /warning/ && l ~ /error/' < file
sed '/[wW][aA][rR][nN][iI][nN][gG]/!d; /[eE][rR][rR][oO][rR]/!d' < file
(该方法的优点是它不依赖于区域设置;例如,其他方法可能无法匹配 WARNING,而在某些区域设置中匹配 WARNÁ)。
答案2
解决此问题的另一种更简单的方法:grep -Ei 'error.warning|warning.error'