Назад | Перейти на главную страницу

sed с несколькими совпадениями

Две "строки 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
$

Попробуйте:

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> находятся в отдельной строке без предшествующей пустой строки.

Редактировать: Исправлена ​​проблема с удалением неправильных строк.