下面的两条“sed 行”仅有一个“\n”不同。
我怎样才能得到这个输出[之前没有新行</pre>
]?[http://pastebin.com/raw.php?i=ED34jvtF]:
.
.
something3
</pre>
something4
.
.
$ echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5'; echo "######################################"; echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5' | sed -e N -e N -e "s#\n</pre>#</pre>#g" -e P -e D
something1
something2
something3
</pre>
something4
something5
######################################
something1
something2
something3</pre>
something4
something5
$
$ echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5' | sed -e N -e N -e "s#\n</pre>#\n</pre>#g" -e P -e D
something1
something2
something3
</pre>
something4
something5
$
答案1
尝试一下:
sed 's|\(.\+\)\(</pre>\)$|\1\n\2|;t;N;\|\n</pre>$|s|^[[:blank:]]*\n||;P;D' inputfile
结果:
something1
something2
something3
</pre>
something4
something5
######################################
something1
something2
something3
</pre>
something4
something5
请注意,这两个实例都</pre>
位于一行中,并且前面没有空行。
编辑:修复了删除错误行的问题。