Заменять только строки, вложенные рядом с нечисловыми

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

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

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

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

Это Mac OS sed? Попробуйте границы слов: sed -i '' -e 's/[[:<:]]600[[:>:]]/123/g' index.html. Если это GNU sed, sed -i 's/\b600\b/123/g' index.html должно работать.

Wiktor Stribiżew 22.05.2019 11:33

@WiktorStribiżew Это Mac OS, и это тоже работает!

friendlygiraffe 22.05.2019 12:02
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
2
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете захватить префикс и суффикс, используя группы. [^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. Однако ваша вторая строка кода работает, спасибо

friendlygiraffe 22.05.2019 11:50

Другие вопросы по теме