我使用SED和N选项三个字符串,他错过了最后一个字符串。 如果行数偶数则一切正常
示例文字:
this is the first line
this is the second line
this is the third line
sed 'N;s/^.*\(first.*\)\n\(second.*$\)/\1\2/;s/ //g'
我想要
thisisthefirstline的 thisisthesecondline
thethirdline
但我得到
thisisthefirstline的 thisisthesecondline
第三行
未处理最后一行 sed跳过这个下标
s/ //g
四行好吗
this is the first line
this is the second line
this is the third line
this is the fourth line
thisisthefirstline**thisisthesecondline**
thisisthethirdline
thisisthefourthline
奇数行的并不总是在最后一行处理
一个简单的解决方案 - 使用管道
sed 'N;s/^.*\(first.*\)\n\(second.*$\)/\1\2/' | sed 's/ //g'
但我会在没有管道的情况下这样做
答案 0 :(得分:1)
因为sed最后看到它不能为你所以它不处理它,只是在最后一行没有N就像:
sed '$!N;s/^.*\(first.*\)\n\(second.*$\)/\1\2/;s/ //g'
$表示最后一行,而且!意思是不 - 所以$!N表示N,除了最后一行。
此外,我推测你想要N问题的答案,但实际上你不需要N来做你正在做的事情,这就足够了:
sed 's/^.*\(first.*\)\n\(second.*$\)/\1\2/;s/ //g'