linux下将ctrl+M替换为换行符 – David

问题:

嵌入式设备中执行命令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’来表示,否则,结果就不对了。

问题解决。

在乎的是沿途的风景以及看风景的心情,让心灵去旅行!

linux下将ctrl+M替换为换行符 – David

相关文章:

你感兴趣的文章:

标签云: