Hi
I did a script in shell which read a file with some data inside:for (( read x x Y ))
do
if ["$Y" == "5,开发者_开发技巧"]; then
echo "5"
sed -i '/^[0-9][0-9]*, [0-9][0-9]*, 6,/d' file.txt
else
echo 'fail'
fi
done
when I did it with a while loop it works but too long because the file is very big and do it line by line
so I would like to do it with a loop for and I get this error:syntax error near unexpected token 'done'
Can you help me?
ThanksEDIT : I would like to know if it's possible to do something like this:
awk 'BEGIN {FS=", "}
{ if ( $3 == "5" )'
echo "5"
sed -i '/^[0-9][0-9]*, [0-9][0-9]*, 6,/d' newfile
'else { print "fail" } }' fileThere are several syntax errors in your code.
Try this:
while read x x Y
do
if [ "$Y" == "5," ]
then
echo "5"
sed -i '/^[0-9][0-9]*, [0-9][0-9]*, 6,/d' file.txt
else
echo 'fail'
fi
done < YOUR_FILE
YOUR_FILE should have at least three columns (x x Y).
If you start an if in a shell script then you should also end it with fi
You need to close the if statement with fi before done.
You can do it in AWK too, without the loop:
awk 'BEGIN {FS="<SET YOUR FIELD SEPARATOR HERE>"}
{ if ( $3 == "5" ) { print "5" ; if ( $0 !~ "^[0-9][0-9]*, [0-9][0-9]*, 6,") print $0 >> "tmpfile" } else { print "fail" ; print $0 >> "tmpfile" } }' YOUR_INPUT_FILE
Then see the contents of tmpfile...
HTH
加载中,请稍侯......
精彩评论