【发布时间】:2017-08-22 19:14:24
【问题描述】:
以下脚本部分读取$next 中的每一行。但是当我尝试 grep 特定模式,即"MO" in $next 时,错误在标准输出中显示为:
grep: 40922|OPR: No such file or directory
grep: MO: No such file or directory
grep: 12345|OPR: No such file or directory
grep: MO: No such file or directory
grep: 12345|12345|202|local|LMNO: No such file or directory
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|local|LMNO
【问题讨论】:
-
另外,您可以通过稍微更改读取命令来避免 awk 的所有调用:
while IFS="|" read i j k l m n o; do ...(请注意,这只是为读取命令设置 IFS,因此您不必之后再设置)。
标签: bash