2016-10-03 3 views
-1

Как я могу сделать, чтобы заменить линию только тогда, когда она начинается и заканчивается только значением. Пример У меня есть эти строкиСпециальная замена в Sed

Line 1: http_access allow acl1 acl2 
Line 2: http_access deny acl1 

Я хочу, чтобы случиться с голодным http_access откажи мне ACL1 просто удалить строку 2. При использовании sed 's/http_access deny acl1/mi_nueva_regla/g' /file изменяет мне две строки.

+1

, что кажется неправильным, проверьте свою информацию дважды. Кроме того, вам не нужен суффикс 'g', но это не проблема. – karakfa

+0

Данная команда 's ///' изменит только одну строку. –

+0

Пожалуйста, включите некоторые примеры ввода и ожидаемый результат как часть вашего [mcve]. Это облегчит другим воспроизведение и понимание того, что вы видите, и улучшить свои шансы на полезный ответ. –

ответ

0

Учитывая входной файл file.txt:

$ cat file.txt 
http_access allow acl1 acl2 
http_access deny acl1 
http_access allow acl2 acl3 
http_access deny acl1 acl3 

удалить только первую строку, содержащую http_access deny с GNU SED:

sed '0,/http_access deny/{/http_access deny/d}' file.txt 

или короче:

sed '0,/http_access deny/{//d}' file.txt 

Выход:

http_access allow acl1 acl2 
http_access allow acl2 acl3 
http_access deny acl1 acl3 
+0

Адрес '0' является расширением GNU' sed'. – tripleee

Смежные вопросы