有没有办法使用grep或awk查找包含例如"a"和"b"的文本文件,但在这种情况下"a"和"b"在不同的行上?
这是一个简单的awk解决方案:
awk 'BEGIN {acnt=0; bcnt=0;} /a/ {acnt++;} /b/ {bcnt++} END { if (acnt > 0 && bcnt > 0) print "Matches"; }' $FILE
Run Code Online (Sandbox Code Playgroud)
一种稍微简单的方法就是使用grep,利用其返回值作为找到值的指标:
grep -l a $FILE && grep -l b $FILE && echo "Both a and b found in $FILE"
Run Code Online (Sandbox Code Playgroud)
您可能希望重定向标准输出,但上述内容应该简单实用.如果需要,你可以将它包装在一个循环中:
files=""
for x in *; do
grep -l a $x && grep -l b $x && files="$files $x" # assuming no spaces
done
# now you can iterate over $files
Run Code Online (Sandbox Code Playgroud)