Как удалить несколько строк в файле с помощью sed - PullRequest
1 голос
/ 10 апреля 2020

Файл test.txt содержит 3 строки:

STREET=main
PHONE=123
EMAIL=abc@xyz.com

Чтобы удалить две строки с STREET и EMAIL, я запускаю sed два раза подряд:

sed -i -- 's/STREET=.*//' test.txt
sed -i -- 's/EMAIL=.*//' test.txt

Вместо того, чтобы дважды использовать команду sed, я бы предпочел удалить обе строки одной командой sed. Как это сделать?

Ответы [ 3 ]

3 голосов
/ 10 апреля 2020

Для удаления (d) строк, содержащих STREET= или EMAIL=.

sed -i -- '/STREET=/d; /EMAIL=/d' file
1 голос
/ 10 апреля 2020

Следующие однострочники sed показывают, как удалить / очистить целевые строки:

Очистить целевые строки:

kent$  sed 's/^\(EMAIL\|STREET\)=.*//' file

PHONE=123

Удалить целевые строки:

kent$  sed '/^\(EMAIL\|STREET\)=/d' file
PHONE=123

Использование шаблона ^\(EMAIL\|STREET\)= позволит избежать касания линий, таких как USER_EMAIL=... или SOME_STREET=

1 голос
/ 10 апреля 2020
sed -i -- 's/STREET=.*//;s/EMAIL=.*//' test.txt
...