Сценарий sed для удаления всех строк с шаблоном и добавления строк в конце

Да. Я пришел к такому выводу для себя по причинам, описанным в этом ответе .

2
15.03.2017, 17:19
2 ответа

Вы должны добавить второе условие - удалять только в том случае, если не последняя строка, а в последней строке используйте a ppend вместо замены удаления строка после, если она соответствует, например,

sed -E '/foo|bar/{$!d
}
${a\
foo\
bar
//d
}' infile
0
27.01.2020, 22:41
( sed -e '/foo/d' -e '/bar/d' data.in; cat <<END
foo
bar
END
) >data.out

Удалите ненужные строки с помощью sed , затем просто добавьте нужные конечные строки с помощью cat и выведите в новый файл.

В качестве альтернативы можно использовать printf вместо cat :

( sed -e '/foo/d' -e '/bar/d' data.in; printf 'foo\nbar\n' ) >data.out

Или, в два этапа,

sed -e '/foo/d' -e '/bar/d' data.in >data.out
printf 'foo\nbar\n' >>data.out

Это дает преимущество в виде ясности и простоты обслуживания.

0
27.01.2020, 22:41

Теги

Похожие вопросы