USB-устройство распознано, но недоступно для использования

Это работает на моем Mac и различных дистрибутивах Linux:

#!/usr/bin/env bash

PATTERN="(GSM[0-9]{5})(AATF)"

sed -E -e $"s_${PATTERN}_\1\\
\2_g" < file_with_values

Где:

  • PATTERN:вы можете определить шаблон в переменной, что упрощает чтение выражения подстановки
  • sed -E -e:установите sedдля использования расширенного регулярного выражения (-E )и для использования предоставленного скрипта (-e)
  • $"...":используется для перевода строк и допускает использование переменных. Посмотрите здесь:bash, цитирующий . Это может быть безопасно не во всех ситуациях, но в вашем случае все должно быть в порядке
  • s_..._...\2_g:— строка замены; Я использую _в качестве разделителей, так что вам не нужно экранировать /и, учитывая, что вам нужны группы захвата(\1и \2), это просто облегчает чтение строки. Обратите внимание на \\, за которым следует новая строка. $"..."позволяет использовать новые строки

Если вам не нужны переменные, вы можете использовать $'....', то есть знак доллара в одинарных кавычках. В этом случае вы можете использовать \n, но не можете вставить новую строку

.

Использование $"..."кажется вполне переносимым :мой код с похожей реализацией работает на docker alpine, centos, debian, fedora, ubuntu.

2
20.06.2020, 18:05
0 ответов

Теги

Похожие вопросы