Sed命令替换如何将空格或多个空格视为一个?

时间:2014-04-25 17:17:19

标签: linux bash sed

我使用此命令插入一行。如果文本或文件中两个条目之间的模式中有空格,则会在新行上打印内容。它工作正常,但有时我遇到2个空格或3个空格而不是我在模式中寻找的空格,所以我得到额外的空白行。

sed "s/ /\n/g"

我想打印一个新行,只有sed在模式中找到一些东西。 我应该如何使用sed命令将1个空格或双重或三重空格视为一个替代?

2 个答案:

答案 0 :(得分: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中挤压重复一个字符,即此示例中的' '

答案 1 :(得分:0)

我会做点像......

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

使用新行查找和替换一个或多个空格。