Применить sed построчно [закрыто]

-2
21.03.2018, 18:18
3 ответа

sed уже работает построчно:

sed -E '/AF|PO/{...sed expression to apply when matching... }' server

Например, выводить только те строки, которые соответствуют этому регулярному выражению.:

sed -nE '/AF|PO/p' server

Флаг -Eдля sedзаставляет утилиту интерпретировать регулярное выражение как расширенное регулярное выражение, а -nотключает неявный вывод каждой входной строки.

Чтобы выполнить несколько действий со строками, соответствующими выражению, заключите их в {... }. Например, печатать каждую совпадающую строку дважды (и не печатать не совпадающие -строки ):

.
sed -nE '/AF|OP/{p;p;}' server
3
28.01.2020, 05:15

sedне для этого. Вы можете использовать собственные возможности оболочки, делая все «строка -на -строка».

0
28.01.2020, 05:15

sed имеет возможности адресации строк, если это вам поможет:

$ seq 5 > input
$ sed '3s/.*/jeff/' input
1
2
jeff
4
5
$ sed '3,5s/.*/new/' input
1
2
new
new
new

Вместо использования цикла оболочки для обработки текстового файла рассмотрите инструмент, который более естественно обрабатывает текст, например :

$ cat input
AF bar
PO baz
other stuff
more other stuff


$ awk '/(AF)|PO/ { print }' input
AF bar
PO baz

$ awk '/stuff/ && !/more/ { print }' input
other stuff
1
28.01.2020, 05:15

Теги

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