转载:http://bbs.chinaunix.net/thread-2325152-1-1.html
在ChinaUnix上看到这个问题,自己非常的有感触,做个remark,以供以后参考
问题:
文件 netinfo,里面存储 的内容如下
0 SUCCES - 成功 ---- 202.100.93.98
0 SUCCES - 成功 ---- 61.160.226.168
0 SUCCES - 成功 ---- 221.206.130.32
0 SUCCES - 成功 ---- 221.206.130.33
2 SUCCES - 成功 ---- 123.235.39.123
0 SUCCES - 成功 ---- 221.192.150.92
0 SUCCES - 成功 ---- 222.222.198.93
1 SUCCES - 成功 ---- 61.158.248.62
0 SUCCES - 成功 ---- 61.191.62.217
我现在是要读取每行的第一个字符,如果不是为0,就输出该行,用for写不行,for写的话,它默认是空格为记录分隔符了,太扯淡了:
for ERR_INFO in `cat /tmp/netinfo`
do
ERROR_INFO=`echo "$ERR_INFO"|awk '{print $1}'`
if [ $ERROR_INFO -ne 0 ]
then
echo "$ERR_INFO" >> /tmp/testresult
fi
done
我这边测试,只能用while read line写才能准确的读取每行。问题在于,while这个玩意执行起来就像老牛拉磨似的,忒花时间 了!
请教 为什么for循环不行,是不是因为有中文的原因??
解答
- OLDIFS=$IFS
- IFS=$'/n'
- 'for code'
- IFS=$OLDIFS