Массовое обновление строки в текстовом файле - PullRequest
0 голосов
/ 13 февраля 2020

Я ищу однострочник (в идеале) для изменения всех экземпляров:

# dropped packets chart for kvm890.0 = auto

на

dropped packets chart for kvm890.0 = no

Я должен отметить, что «kvm890.0» меняется, например, вот так:

# dropped packets chart for kvm508.0 = auto
# dropped packets chart for kvm864.0 = auto
# dropped packets chart for kvm357.0 = auto
# dropped packets chart for kvm822.0 = auto
# dropped packets chart for kvm785.0 = auto

Любые идеи будут оценены.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Разбейте строку на две части, захватите известную часть в первой группе (\1) и замените все остальное строкой no.

sed  's/\(dropped packets chart for.*= \).*/\1no/g' textfile
# dropped packets chart for kvm508.0 = no
# dropped packets chart for kvm864.0 = no
# dropped packets chart for kvm357.0 = no
# dropped packets chart for kvm822.0 = no
# dropped packets chart for kvm785.0 = no

ИЛИ

Здесь просто измените все значения auto на no, если в строке присутствует строка dropped packets chart for.

sed '/dropped packets chart for/ s/\<auto\>/no/g' textfile
# dropped packets chart for kvm508.0 = no
# dropped packets chart for kvm864.0 = no
# dropped packets chart for kvm357.0 = no
# dropped packets chart for kvm822.0 = no
# dropped packets chart for kvm785.0 = no
0 голосов
/ 13 февраля 2020

Просто используйте sed:

sed -i 's/STRING_TO_REPLACE/NEW_STRING/g' filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...