Используя sed замените на регулярное выражение и переменные, содержащие числа - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблемы с выяснением синтаксиса строки sed.Я использую регулярные выражения, поэтому я использовал двойные кавычки вокруг всего этого.Однако путь Windows, который я заменяю, содержит номер.

windowsPath="\\\\This\\path\\is\\the\\best\\1"
sed -i "s,^bestPath=.*,bestPath=${windowsPath}," pathfile

Это дает мне:

sed: -e expression #1, char 126: invalid reference \1 on `s' command's RHS

Я попытался исключить переменную из кавычек, чтобы избежать интерпретации, но затем я получил это:

Код:

windowsPath="\\\\This\\path\\is\\the\\best\\1"
sed -i "s,^bestPath=.*,bestPath="${windowsPath}"," pathfile

Результат:

sed: -e expression #1, char 42: unterminated `s' command

Любые мастера sed с идеями о том, что здесь происходит?Я работаю в Bash на RHEL 6

1 Ответ

0 голосов
/ 19 сентября 2018

В назначении windowsPath используйте одинарные кавычки (') вместо двойных кавычек (").

#!/bin/bash

windowsPath='\\\\This\\path\\is\\the\\best\\1'
sed -e "s,^bestPath=.*,bestPath=${windowsPath}," pathfile

exit $?

Вывод:

bestPath=\\This\path\is\the\best\1

Надеюсь, это поможет

...