linux sed用新行替换空格不能按预期工作

时间:2014-12-25 20:18:11

标签: sed newline

下面的命令在UNIX中正常工作,但它没有替换LINUX中的新行。

#! /bin/sed -f
:loop
/[^]$/N
s/\n//
t loop

我尝试了多种选择,但似乎没有任何效果。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

[^]是无效的表达式。我不知道为什么你的sed版本会接受它,但是在列表开头的POSIX sed ^中反转它。也就是说,[^abc]匹配除abc之外的所有字符。

此外,要匹配列表中的],必须在开始[或反转^后立即显示。 []abc]匹配abc],而[^]abc]匹配除此之外的任何字符。因此,sed无法在列表]中找到结束[^]并因错误而失败。

要匹配文字^,请使用\^

#! /bin/sed -f
:loop
/\^$/N
s/\n//
t loop