以下脚本部分读取$next中的每一行.但是当我尝试grep特定模式,即$next中的“MO”时,错误在标准输出上显示为
grep:40922 | OPR:没有这样的文件或目录
grep:MO:没有这样的文件或目录
grep:12345 | OPR:没有这样的文件或目录
grep:MO:没有这样的文件或目录
grep:12345 | 12345 | 202 | local | LMNO:没有这样的文件或目录
cat /home/scripts/$E1.out | while read next do i=`echo $next | awk -F"|" '{print($1)}'` j=`echo $next | awk -F"|" '{print($2)}'` k=`echo $next | awk -F"|" '{print($3)}'` l=`echo $next | awk -F"|" '{print($4)}'` m=`echo $next | awk -F"|" '{print($5)}'` n=`echo $next | awk -F"|" '{print($6)}'` o=`echo $next | awk -F"|" '{print($6)}'` if grep -q "MO" $next then echo "FOUND;" >> /home/scripts/sql.$E1.out else echo "NOT FOUND;" >> /home/scripts/sql.$E1.out fi done
$E1.out文件看起来像:
40922 | OPR MO 12345 | OPR MO 12345 | 12345 | 202 |本地| LMNO
您传递给
grep
,$next的论据被视为要搜索的文件名列表.如果要在该行内搜索一个字符串(例如MO),那么您需要将其放在一个文件中,并将该文件作为参数传递,或者通过标准输入进行管道传输.
这里有一个例子,你可以试试在命令行;当然,用你所使用的字面值代替你所使用的变量说明:
if echo "40922|OPR MO 12345|OPR MO 12345|12345|202|local|LMNO" | grep -q "MO" then echo "FOUND" else echo "NOT FOUND" fi
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。