LINUX.ORG.RU

sed добавить после первой строки вхождения свою строку


1

1

Есть файл test

1111
2222
3333
4444
5555
3333
4444
Надо, чтобы после первой строки, начинающейся с 3 была моя строка, т.е.
1111
2222
3333
Наверху трёшка!
4444
5555
3333
4444

sed -e '/^3/a\
наверху трёшка!' test

добавляет после каждой строки с тройками

sed -e '0,/^3.*/a\
наверху трёшка!' test

добавляет после каждой строки до первого вхождения включительно.

Снимите с ручника, пожалуйста. Как правильно написать?

★★★

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

Возьми awk или тебе принципиально sed нужен?

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

Если записать, то:

sed -i '3a наверху трёшка' test

TGZ ★★★★
()

Вот так можно получить номер строки в которой первое вхождение первым числом до двоеточия в выхлопе

$ grep --line-number --max-count=1 --only-matching ^3 /home/user/test
3:3
$
Вот так получите просто число строки в которой первое вхождение
$ grep --line-number --max-count=1 --only-matching ^3 /home/user/test | sed -e s/\:.*//
3
$
Дальше придумывайте сами

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

Что-то переборщил. Если не известен номер строки, а только ее содержание, то проще наверное так:

sed -i '/333/a твой новая строка' test 
TGZ ★★★★
()
Ответ на: комментарий от TGZ

Это меняет КАЖДОЕ вхождение, а ТС просил только первое!

adriano32 ★★★
()

sed '0,/^3.*/s//наверху трёшка!/' test

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

Так пробовал, но неосилил заработать. Буду курить ман )

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