shell文件读取行的问题,着急上火啊。。。。
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循环不行,是不是因为有中文的原因??
作者: zhnghaijin 发布时间: 2011-05-29
作者: zhnghaijin 发布时间: 2011-05-29
- OLDIFS=$IFS
- IFS=$'\n'
- 'for code'
- IFS=$OLDIFS
作者: yinyuemi 发布时间: 2011-05-29
额~我看不懂这个是什么方式的处理???
作者: zhnghaijin 发布时间: 2011-05-29
- awk '$1!=0' file
- 2 SUCCES - 成功 ---- 123.235.39.123
- 1 SUCCES - 成功 ---- 61.158.248.62
作者: zooyo 发布时间: 2011-05-29
太刁了!!有时候我们总是把问题想的太复杂。高人擅用的就是简洁的思维,感慨的一次学习啊。。。
作者: zhnghaijin 发布时间: 2011-05-29
先设定新的IFS,执行完你的for code,然后再还原IFS
作者: yinyuemi 发布时间: 2011-05-29
学习了。。。不过我很困惑的是,为什么直接for有问题呢。是因为中文的原因么?
作者: zhnghaijin 发布时间: 2011-05-29
作者: zooyo 发布时间: 2011-05-29
运行下这个看下:
- for ERR_INFO in `cat /tmp/netinfo`
- do
- echo $ERR_INFO
- done
作者: yinyuemi 发布时间: 2011-05-29