无法删除回车

时间:2011-02-18 00:05:44

标签: sed

问候!

我的任务是根据我们从硬件供应商处收到的文件创建报告。我需要为两个字段'Test_Version'和'Model-Manufacturer'grep这些文件;对于每个字段,我需要捕获它们相应的值。

previous post中,我找到了帮助来创建基本报告,如下所示:

    find . -name "*.VER" -exec egrep -A 1 'Test_Version=|Model-Manufacturer:' {} ';' 

Model-Manufacturer:^M
R22-100^M
Test_Version=2.6.3^M
Model-Manufacturer:^M
R16-300^M
Test_Version=2.6.3^M

然而,输出的数据充满了DOS回车“^ M”。我的老板希望“模型制造商”显示为“Test_Version”,即

Model-Manufacturer:R22-100
Test_Version=2.6.3
Model-Manufacturer:R16-300
Test_Version=2.6.3

使用sed,我试图删除“Model-Manufacturer”的“^ M”字符,但无济于事:

find . -name "*.VER" -exec egrep -A 1 'Test_Version=|Model-Manufacturer:' {} ';' | sed 's/Model-Manufacturer:^M//g'

此命令无效。我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

尝试一下:

sed '/Model-Manufacturer:/s/\r//g'

如果您还有换行符,并且想要将这两行合并为一行,则可以使用上一个问题的答案中显示的技巧之一。

答案 1 :(得分:1)

如果有的话,可以使用dos2unix删除回车。或使用tr

tr -d '\r' < file

答案 2 :(得分:0)

如果你使用Bash作为shell,或者在vi中创建脚本,你应该可以这样做:

sed -e's /&lt; Ctrl-V&gt;&lt; Ctrl-M&gt; // g'

删除CR。

Ctrl-V(键盘上的击键)按字面顺序插入下一个按键,Ctrl-M回车。

相关问题