下面的命令在UNIX中正常工作,但它没有替换LINUX中的新行。
#! /bin/sed -f
:loop
/[^]$/N
s/\n//
t loop
我尝试了多种选择,但似乎没有任何效果。有什么建议吗?
答案 0 :(得分:1)
[^]
是无效的表达式。我不知道为什么你的sed版本会接受它,但是在列表开头的POSIX sed ^
中反转它。也就是说,[^abc]
匹配除a
,b
和c
之外的所有字符。
此外,要匹配列表中的]
,必须在开始[
或反转^
后立即显示。 []abc]
匹配a
,b
,c
和]
,而[^]abc]
匹配除此之外的任何字符。因此,sed无法在列表]
中找到结束[^]
并因错误而失败。
要匹配文字^
,请使用\^
:
#! /bin/sed -f
:loop
/\^$/N
s/\n//
t loop