В SED как найти строку по определенному слову, заменить строку другим контентом - PullRequest
0 голосов
/ 23 января 2019

Как найти строку по слову и заменить всю строку содержимым?

Это то, что у меня есть, переменная для вставки после задачи: + 6 символов WG = "AREA001"

Оригинал: 'Печать - Процесс: 14052549 Задача: 001 LONDON'

Ожидаемый результат: 'Печать - Процесс: 14052549 Задача: 001 AR: AREA001 LONDON'

WG = '<subject>Print Card Workgroup XXXXX Task: 001</subject>

cat test1.xml | sed -e "s/<subject>\<subject>$WG" > test2.xml

ОШИБКА:

/gd: command garbled: s/<subject>/<subject>Print Card Workgroup XXXXX Task: 001</subject>

ПРИНЯТОЕ РЕШЕНИЕ:

кошачий тест.xml |sed -e "s |. subject . | $ WG |"> t.xml

1 Ответ

0 голосов
/ 23 января 2019

Редактировать:

Как исправлено @Glenn, содержимое переменной $ WG содержит / и поэтому должно быть экранировано:

sed -e "s/^.*\<subject\>.*$/${WG//\//\\\/}/"

Заменить любую строку, содержащую слово <subject> содержимым переменной WG:

cat test1.xml | sed -e "s/^.*\<subject\>.*$/$WG/g"

Как сказал @Benjamin, вам нужно удалить пробелы вокруг = при назначении вашей переменной:

WG='<subject>Print Card Workgroup XXXXX Task: 001</subject>'
...