Используйте одинарные кавычки, чтобы символ $ работал как конец -строки -. Если вы хотите также использовать grep с какой-либо переменной, используйте комбинацию двойных и одинарных кавычек, как показано ниже:
grep "$var"'$'
Мое предыдущее сообщение было удалено из-за дублирования. Позвольте мне объяснить, чем это отличается.
В других сообщениях упоминается либо полное использование двойных кавычек ""
, либо полное использование одинарных кавычек ''
. У них обоих есть свои ограничения. Следующее объясняет это.
Проблема со всеми двойными кавычками следующая :grep "pattern$"
выдает следующую ошибку:Illegal variable name.
И использование всех одинарных кавычек работает, но если вы хотите подстановку переменных, все одинарные кавычки будут не работать. Например:
Если у меня есть строка A_BOOK
, включая другие строки в файле FILE.
$ cat FILE
A_BOOK
B_BOOK_NOT_LAST
C_BOOK
Если я установлю BOOK на переменную BK
set BK = BOOK
Если я использую grep со всеми двойными кавычками, я получаю следующую ошибку:grep "${BK}$" FILE*
:1-й $ для замены переменной, 2-й для конца шаблона(Недопустимое имя переменной).
Если я использую grep со всеми одинарными кавычками, подстановка переменных не происходит. grep '${BK}$' FILE
ничего не возвращает
Если я использую комбинацию двойных и одинарных кавычек, я получаю то, что ожидаю. Двойные кавычки для замены переменных и одинарные кавычки для конца шаблона.
$ grep "${BK}"'$' # << gives expected output
A_BOOK
C_BOOK