Я использую следующий код bash, используя sed для замены всех экземпляров «600» на «123» в файле HTML:
sed -i '' -e 's/'\"600\"'/'\"123\"'/' index.html
Я хотел бы расширить поиск, чтобы нацеливаться не только на экземпляры 600 в кавычках, но и на любой нечисловой символ.
Например, -600-, 600 , ^600^ будут целевыми, а 16001, -6001, 1600- - нет.
@WiktorStribiżew Это Mac OS, и это тоже работает!
Вы можете захватить префикс и суффикс, используя группы. [^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
Первая строка кода, которую вы разместили, не работает, если я поставлю вкладку перед 600, а затем сразу после нее новую строку, например: 600. Однако ваша вторая строка кода работает, спасибо
Это Mac OS sed? Попробуйте границы слов:
sed -i '' -e 's/[[:<:]]600[[:>:]]/123/g' index.html
. Если это GNU sed,sed -i 's/\b600\b/123/g' index.html
должно работать.