Переменная с кавычками в качестве команды sed выдает ошибку

Вы можете изменить свою команду, например:

sed 's/user.*Gecko)//g'

Подстрока user.....Gecko)будет удалена.

Вы можете использовать:

sed -Ee "s/(.*)(user.*Gecko\))(.*)/\1\3/g" filename

Он просто напечатает первое и третье поля и проигнорирует второе поле, которое содержит все между пользователем и Gecko ), включая оба.

Если вы уверены, что userне является начальным словом, а Gecko)не последним словом, вы можете использовать:

sed -Ee "s/(.*) (user.*Gecko\)) (.*)/\1 \3/g" filename

этот более точен, так как заменяет только слова, разделенные пробелом.

1
21.10.2017, 09:20
1 ответ

No use una variable para almacenar comandos de shell, use una matriz. Ver BashFAQ -50 Estoy tratando de poner un comando en una variable, pero los casos complejos siempre fallan.

Simplemente usa una matriz como se muestra a continuación

num='[0-9]'
argArray=('-e' "s/${num}/as df/g")

y doble -comillas la expansión de la matriz para no permitir que las palabras se dividan por Word -división y llamada como

echo 123 | sed -r "${argArray[@]}"
1
27.01.2020, 23:44

Теги

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