Пример замены n-го появления строки в файле
Задача была озвучена так:
Цитата:
20:19 < todd_dsm> hey all, I have 1 file to modify (httpd.conf) I need to change the 2nd of for occurrences of "AllowOverride None". Is there a way do change the 2nd occurrence and leave 1,3, and 4 untouched?
Примерный перевод
Цитата:
У меня есть httpd.conf. Мне надо заменить второе появление в файле "AllowOverride None". Есть возможность заменить второе появление, не тронув первое, третье и четвертое?
Ответ:
Пример заменяет второе появление "AllowOverride None" на "replace".
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
awk '/AllowOverride None/ && (++i == 2) {print "replace";next}{print}'На sed
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
sed -e '/AllowOverride None/{x;/^1$/{x;s/.*/replace/;x};s/$/1/;x}'Соответственно, если понадобится изменить только третье появление то:
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
sed -e '/AllowOverride None/{x;/^11$/{x;s/.*/replace/;x};s/$/1/;x}'И дальше по аналогии
Если кому нужно пояснение "как это работает", допишу.
Смотри так же:
- 1040 просмотров
Страница для печати


Отправить комментарий