Найдите положение и внесите изменения, используя sed

11

Этот скрипт использует sed, чтобы изменить все "" на "новые вещи". Как можно изменить только "" после yyy: используя sed или что-то еще?

cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
CW Holeman II
источник

Ответы:

8

Я не могу понять ваш вопрос. Если вы хотите заменить ТОЛЬКО значение после 'yyy', используйте предыдущий ответ. Если вы хотите заменить ЛЮБЫЕ значения после 'yyy', попробуйте следующую строку:

sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt

Не проверял это: D ...


источник
3

Ответ от O'Reilly - Sed & Awk, 2-е дополнение, около страницы 152

Написать скрипт в файл

/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}

Примените это к своим данным с обычным

Sed -f скрипт sample.txt

Этот сценарий говорит искать yyy :. При обнаружении прочитайте еще одну строку в буфере паттернов (звучит как Star Trek Transporter). Теперь выполните команду as / на соединенных строках. Итак, мы ищем yyy: newline "". Если найдено, замените на yyy: \ note

Удачи


источник
1
см. справочную страницу: unixhelp.ed.ac.uk/CGI/man-cgi?sed пункт поиска адресов
1

Я обнаружил, что когда вещи выходят за пределы определенного уровня сложности, я переключаюсь на Perl . s2p будет обрабатывать перевод вашего текущего решения sed. Или вы могли бы написать это с нуля тривиально. Выражение поиска / замены останется прежним.

Брайан Агнью
источник