Sed

如何找到多個空格並替換為一個空格?

  • May 15, 2019

我想找到重複的空格(多個)並用一個空格替換它們。我試過:

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

另外:https ://stackoverflow.com/questions/22939323/sed-command-to-replace-multiple-spaces-into-single-spaces

在標準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

擠壓空間。

引用自:https://unix.stackexchange.com/questions/518977