LINUX.ORG.RU
ФорумAdmin

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

 , , , ,


0

3

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

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

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

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

попробуй так

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

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

попробуй так
sed -i

У ТС проблема как раз с нестандартным ключом -i ;-)

unterwulf ()

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

anonymous ()

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

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

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

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

vasyan ()
sed -i -e "/Marker/i\\
blahblah" file

или textproc/gsed можно поставить.

Novel ★★★★ ()
Последнее исправление: Novel (всего исправлений: 2)

столкнулся с несовместимостью 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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.