我说A1~A7是指随意的7个字符串,用第二种方式就不行了吧
追答第二种方式还是可以的,变通一下即可。
for i in "A1" "A2" "A3" "A4" "A5" "A6" "A7"
do
cat text.txt|grep -q "$i"
if [ $? -ne 0 ]; then
flag=1
break #只要有一个没包含就立即退出for循环,省得做许多无用功
fi
done
多谢大神,还有点迷糊,两个问题:第一,如果用awk,只能和print使用,我怎么把yes或者no这些log输出到某个文件呢,我试了下直接>不行。第二,上面的程序还有点不懂[ $? -ne 0 ] && flag=1, 如果上一句grep有一次没有出来东西,flag被置成1,这里就可以跳出循环了吧;我感觉现在这样写的只取决于最后一个str7是否能grep出来?望赐教! 刷新一下第二个问题有了答案,嘿嘿。
追答第一,> 要在整个awk语句后面用,这种形式: awk '....' text.txt >result.txt
第二,是的,我上面补充回答的已经加了break跳出for循环。但不加也没错,只是效率低点。刷新一下,发现你已经看到了。
“只取决于最后一个str7是否能grep出来”,这个说法不对。因为只有grep不出来,才会改变flag的值(置1),如果flag在grep前面几个字符串的时候就已经被置1了,那么str7的结果对其无影响。
谢谢大神,读了一下这个确实OK,不过我后面还要用到去这个txt里查找A1—A7七个字符串,这样写就有点麻烦了,请问还有其他的解法没?多谢啦