Исключить некоторые совпадения с sed

у меня есть ряд файлов с записями(пространства имен в исходном коде), как

FW.WGS.Web.HHH.Controls, 
FW.WGS.Web.HHH.Email,  
FW.WGS.Web.HHH.Account, etc    

и с записи

FW.WGS.Web.Controls, 
FW.WGS.Web.Email,      
FW.WGS.Web.Account, etc

используя sed (или какой-либо другой инструмент linux/unix), я хочу изменить все FW.РГ.Сеть.Управления/электронной почты/аккаунта для FW.РГ.Сеть..Контроль/электронной почты/аккаунта.

моя текущая команда sed соответствует s / WGS.Web / WGS.Сеть.HHHH/ g ' не подходит - я получаю записи типа

FW.WGS.Web.HHH.HHH.Email

поэтому мне нужно предотвратить sed от соответствия строк в них уже есть "HHH".

3
задан bryan
06.03.2023 4:07 Количество просмотров материала 2583
Распечатать страницу

2 ответа

в sed можно использовать /pattern/!s/pattern/, например,

/HHH/!s/WGS\.Web/WGS\.Web\.HHH/g
8
отвечен Mikel 2023-03-07 11:55
perl -pe 's/WGS\.Web(?!\.HHH)/$&.HHH/g'

(где $& ярлык для найденного текста)

See perlre.

1
отвечен grawity 2023-03-07 14:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх