问题:
嵌入式设备中执行命令wget,将错误信息重定向到文件wget.log中,使用vim编辑器查看信息:
Connecting to 192.168.1.63 (192.168.1.63:80)
^Mindex.html 0% | | 0 --:--:-- ETA^Mindex.html 100% |*******************************| 246 --:--:-- ETA
这样,当执行命令
cat wget.log | grep 100% | awk -F ' ' '{print $2}'
时,期待获取的字符串为“100%”,得到的却是“0%”。
原来,虽然通过cat或者less命令并不显示两个“^M”之间的信息,但是awk却能看到,所以,需要将{print $2}改为{print $8}才能得到“100%”。
解决办法:
1. 只要将两个“^M”改为换行符,就可以通过grep 100%查找到真正包含“100%”的行。
2. 在vim编辑器中将“^M”替换为换行符的命令为:
:%s/^M/\r/gc
其中,“^M”的输入方法是:按住Ctrl键,先按v,再松开v,再按m。
3. 使用sed命令替换文本文件中的“^M”的命令:
sed -i s/^M/'\n'/g this.log
其中,this.log为要执行替换命令的文本文件,“^M”的输入方法是:按住Ctrl键,先按v,再松开v,再按m。
备注:换行符一定要用'\n'来表示,否则,结果就不对了。
问题解决。