निम्नलिखित स्क्रिप्ट भाग प्रत्येक पंक्ति को $next
में पढ़ता है। लेकिन जब मैं $next
में "MO"
यानी खास पैटर्न grep करने की कोशिश, त्रुटि के रूप में मानक आउटपुट पर दिखाया जाता है:आईएफ कथन में grep
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 के सभी आमंत्रण से बच सकते हैं कमांड कमांड: 'जबकि आईएफएस = "|" पढ़ें मैं जे के एल एम एन ओ; करें ... '(ध्यान दें कि यह सिर्फ पढ़ने के लिए IFS सेट करता है, इसलिए आपको इसे बाद में सेट करने की आवश्यकता नहीं है)। –