2011-02-18 71 views
0

問候!無法刪除回車

我的任務是創建關於我們從硬件供應商處收到的文件的報告。我需要grep這些文件的兩個字段'Test_Version'和'Model-Manufacturer';對於每個領域,我需要捕捉他們相應的值。

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,我試圖以刪除「模型製造商」,但無濟於事了「^ M」字:

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

該命令沒有效果。我在這裏錯過了什麼?

回答

2

試試這個:

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

如果你也有新行和要兩行合併爲一個,你可以使用的答案顯示出你前面的問題的技術之一。

0

如果你使用bash作爲你的shell,或者創建在vi腳本,你應該能夠做到:

的sed -e「S/<按Ctrl-V> <按Ctrl-M> // g'

刪除CR。

Ctrl-V(鍵盤上的按鍵)直接插入下一個按鍵,而Ctrl-M則回車。

1

如果有,可以使用dos2unix刪除回車符。或者使用tr

tr -d '\r' < file 
+0

使用`tr`,我成功地從命令行找到了`find。 -name「* .VER」-exec egrep -A 1'Test_Version = | Model-Manufacturer:'{}';' > tmp1; tr -d'^ M' tmp2`。但是,在bash腳本中的相同命令不會做任何事情!我想我瘋了!幫幫我! – Chris 2011-02-18 19:37:33