问候!
我的任务是根据我们从硬件供应商处收到的文件创建报告。我需要为两个字段'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'
此命令无效。我在这里缺少什么?
答案 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回车。