Почему моя команда sed не работает при использовании переменных? - PullRequest
4 голосов
/ 23 ноября 2010

используя bash, я пытаюсь вставить переменную для даты и найти файл журнала для этой даты, а затем отправить вывод в файл.Если я жестко закодирую дату, как это, она работает:

sed -n '/Nov 22, 2010/,$p' $file >$log_file

, но если я делаю это так, она терпит неудачу:

date="Nov 22, 2010"
sed -n '/$date/,$p' $file >$log_file

Полученная ошибка: sed: 1: "/Nov 22, 2010/,": expected context address Спасибо запомощь.

1 Ответ

8 голосов
/ 23 ноября 2010

В сценариях оболочки существует разница между одинарными и двойными кавычками. Переменные внутри одинарных кавычек не расширены (в отличие от двойных кавычек), поэтому вам потребуется:

date="Nov 22, 2010"
sed -n "/$date/,\$p" $file >$log_file

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...