2011-06-30 160 views
0

使用Linux shell腳本,我如何能夠從這樣的刪除^ [字符:如何使用Linux shell腳本刪除^ [文件中的字符?

^[[0mCAM1> 
^[[0^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H 
rcv-multicast: 0 
     tx-bytes: 33649974 
    tx-packets: 99133 
+0

你想刪除^ [或所有的轉義序列? – Flimzy

+0

這是從哪裏來的?一份文件 ? '^ ['是轉義符號(ASCII字符27/0x1B),IIRC'^ [[0m'是重置字符顏色和屬性的序列。 – DarkDust

+0

請參閱[此複製](http://stackoverflow.com/questions/6534556/how-do-we-remove-and-all-of-the-escape-sequences-in-a-file-using-linux-shell )的問題,它有更好的答案 –

回答

1

您可以與sed的,例如:

sed 's/^\[//g' oldfile > newfile; 
mv newfile oldfile; 

(它將只刪除尾隨括號,如果你想將它們全部刪除,請從sed的表達^號)

2

您可以使用sed從文件中刪除字符是這樣的:

sed -i '' -e 's/^[//g' somefile 

-i ''使其更改文件就地(不能複印)。

0

您可以通過刪除這些控制字符:

tr -d "[:cntrl:]" file.txt 

但它會刪除也是新行結尾,所以這裏是一個把戲,定義這個別名:

alias clean='tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"' 

然後嘗試這樣的:

cat file.txt | clean > new_file.txt