Цей скрипт використовує sed, щоб змінити всі "" на "нові речі". Як можна змінити лише "" після yyy: використовуючи sed або щось інше?
cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt
Цей скрипт використовує 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 2nd Addition На всьому стор. 152
Запишіть сценарій у файл
/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}
Застосовуйте це до своїх даних звичайним
sed -f скрипт sample.txt
Цей сценарій говорить шукайте yyy:. Коли знайдете, прочитайте інший рядок у буфері шаблону (звучить як Star Trek Transporter). Тепер виконайте як / командуйте в об'єднаних рядках. Тож ми шукаємо yyy: newline "". Якщо знайдено замінити на yyy: \ помітити зворотній косою рисою фактичний новий рядок, то "новий матеріал"
Удачі