2014-04-25 51 views
2

我使用這個命令來插入一行。如果文本或文件中兩個條目之間的模式中有空格,則會在新行上打印內容。它工作正常,但是有時候我會遇到2個空格或3個空格而不是我在模式中尋找的空間,所以我得到了額外的空行。Sed命令替換如何將空格或多個空格視爲一個空格?

sed "s/ /\n/g" 

我想要打印一個新行,只有sed找到模式中的某些東西。 我應該如何使用sed命令將1個空格或雙個或三個空格視爲一個替代?

+0

我知道這是一個sed問題。但它可以通過'tr -s'''\ n''來實現 –

+0

並且也可以通過'awk'$ 1 = $ 1'OFS ='\ n'' – devnull

+0

@ shiplu.mokadd.im添加選項幾乎沒有意義在其中一個答案中已經指定之後的評論中。 – devnull

回答

3

你需要一個量詞:

sed "s/ */\n/g" 

sed 's/ \+/\n/g'  # With GNU sed 

sed -r 's/ +/\n/g' 

sed 's/ \{1,\}/\n/g' 

sed -r 's/ {1,}/\n/g' 

如果使用BSD的sed,

sed 's/ */\'$'\n''/g' 

sed -r 's/ +/\'$'\n''/g' 

您也可以使用tr

tr -s ' ' '\n' 

-s選項擠壓在SET1的字符的重複,即在此示例中' '

+0

第二個不便攜式。 –

+0

@ shiplu.mokadd.im謝謝加了一個筆記。 BSD sed增加了選項。 – devnull

0

我會做這樣的事情......

sed -e 's/\s\+/\n/g' [filename] 

要查找並用一個新行替換一個或多個空白。

相關問題