LINUX.ORG.RU
ФорумAdmin

BSD sed - добавление строки перед заданной

 , , , ,


0

3

Думаю, что для таких простых задач sed вполне оправдан. Но столкнулся с несовместимостью GNU реализации седа с posix.

В гну для добавления строки перед маркером я бы сделал так:

sed -i "/\;Marker/i blahblah" file

Как это переписать под BSD?



Последнее исправление: mammuthus (всего исправлений: 1)

Так выходит, что не особо-то и оправдан.

anonymous
()

Как это переписать под BSD?

А как вы подобное делаете с awk, у которого и в GNU реализации нет такой способности? ;-)

unterwulf
()
Ответ на: комментарий от unterwulf

сам помню некоторое время предавался всевозможному блуду по данному поводу :)

vasyan
()

столкнулся с несовместимостью GNU реализации седа с posix

Это было бы багом, которым стоит того, чтобы о нем сообщить (если еще не), но я не вижу тут несовместимости ГНУ реализации седа с ПОЗИКСом.

Поясните, если не сложно.

Zmicier ★★★★★
()
Ответ на: комментарий от Novel

И ведь да, завелось, спасибо.

Ну про gsed понятно, что можно.

mammuthus
() автор топика
$ cat file
1
2 Marker
3

GNU

$ gsed -i "/Marker/i blahblah" file
$ cat file
1
blahblah
2 Marker
3

BSD

$ sed -i'' -e '/Marker/i\'$'\n''blahblah'$'\n' file
$ cat file
1
blahblah
2 Marker
3

evbogdanov
()
Ответ на: комментарий от evbogdanov

Хотя решение на Перле нравится гораздо больше:

$ perl -i -pE 'say "blahblah" if /Marker/' file

evbogdanov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.