Sed
如何找到多個空格並替換為一個空格?
我想找到重複的空格(多個)並用一個空格替換它們。我試過:
sed -e 's/ []+/ /g' myfile.txt > myfile2.txt
這導致了一個空文件。為什麼?以及如何實現我的目標?
您的命令出錯:
sed: -e expression #1, char 10: unterminated 's' command
可能是因為沒有生成標準輸出。嘗試
sed -e 's/ \+/ /g' myfile.txt > myfile2.txt
在標準
sed
中,要搜尋一個或多個 SPC 字元,語法為:sed 's/ \{1,\}/ /g'
或者
sed 's/ */ /g'
(這是星號前的兩個空格)。或者讓它更清晰:
sed 's/[ ][ ]*/ /g'
一旦
-E
(對於擴展的正則表達式)被添加到標準中(應該在下一個主要的 POSIX 版本中發生,許多實現已經支持它),你還可以這樣做:sed -E 's/ +/ /g'
一些
sed
實現還可以\+
將基本正則表達式(不帶-E
)理解為\{1,\}
.但是在這裡,您可以
tr
改用:tr -s ' ' < file.in > file.out
擠壓空間。