我使用這個命令來插入一行。如果文本或文件中兩個條目之間的模式中有空格,則會在新行上打印內容。它工作正常,但是有時候我會遇到2個空格或3個空格而不是我在模式中尋找的空間,所以我得到了額外的空行。Sed命令替換如何將空格或多個空格視爲一個空格?
sed "s/ /\n/g"
我想要打印一個新行,只有sed找到模式中的某些東西。 我應該如何使用sed命令將1個空格或雙個或三個空格視爲一個替代?
我使用這個命令來插入一行。如果文本或文件中兩個條目之間的模式中有空格,則會在新行上打印內容。它工作正常,但是有時候我會遇到2個空格或3個空格而不是我在模式中尋找的空間,所以我得到了額外的空行。Sed命令替換如何將空格或多個空格視爲一個空格?
sed "s/ /\n/g"
我想要打印一個新行,只有sed找到模式中的某些東西。 我應該如何使用sed命令將1個空格或雙個或三個空格視爲一個替代?
你需要一個量詞:
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的字符的重複,即在此示例中' '
。
第二個不便攜式。 –
@ shiplu.mokadd.im謝謝加了一個筆記。 BSD sed增加了選項。 – devnull
我會做這樣的事情......
sed -e 's/\s\+/\n/g' [filename]
要查找並用一個新行替換一個或多個空白。
我知道這是一個sed問題。但它可以通過'tr -s'''\ n''來實現 –
並且也可以通過'awk'$ 1 = $ 1'OFS ='\ n'' – devnull
@ shiplu.mokadd.im添加選項幾乎沒有意義在其中一個答案中已經指定之後的評論中。 – devnull