Этот скрипт использует sed, чтобы изменить все "" на "новые вещи". Как можно изменить только "" после yyy: используя sed или что-то еще?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Я не могу понять ваш вопрос. Если вы хотите заменить ТОЛЬКО значение после 'yyy', используйте предыдущий ответ. Если вы хотите заменить ЛЮБЫЕ значения после 'yyy', попробуйте следующую строку:
sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt
Не проверял это: D ...
Ответ от 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
Удачи
Я обнаружил, что когда вещи выходят за пределы определенного уровня сложности, я переключаюсь на Perl . s2p будет обрабатывать перевод вашего текущего решения sed. Или вы могли бы написать это с нуля тривиально. Выражение поиска / замены останется прежним.
источник