IF语句中的grep

时间:2010-10-15 15:48:51

标签: bash

以下脚本部分读取$next中的每一行。但是当我尝试grep特定模式,即"MO"中的$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  

3 个答案:

答案 0 :(得分:24)

您传递给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

答案 1 :(得分:3)

if grep -q "MO" ${E1}.out then
  echo "found"
else
  echo "not found"
fi

答案 2 :(得分:0)

 if tmux ls | grep -q "ABC"; then echo "1";  else echo "2"; fi
相关问题