заменить только строки, которые вложены в не числа - PullRequest
0 голосов
/ 22 мая 2019

Я использую следующий код bash, используя sed, чтобы заменить все экземпляры «600» на «123» в файле HTML:

sed -i '' -e 's/'\"600\"'/'\"123\"'/' index.html

Я хотел бы расширить поиск, чтобы охватить не только экземпляры600 в кавычках, но любой нечисловой символ.

Например, -600-, 600, ^ 600 ^ будут заданы, но 16001, -6001, 1600- не будут.

1 Ответ

1 голос
/ 22 мая 2019

Вы можете захватить префикс и суффикс, используя группы.[^0-9] соответствует нечисловым символам.

sed -i '' -E 's,([^0-9])600([^0-9]),\1123\2,g' index.html

Пример:

a600a
^600^
16001
600

становится

a123a
^123^
16001
600

Вы также можете использовать это для исправления последней строки (600 не имеет префикса / суффикса):

sed -i '' -E 's,([^0-9]|^)600([^0-9]|$),\1123\2,g' index.html

Результат:

a123a
^123^
16001
123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...