Я пытаюсь понять как grep, решающий взять $ в качестве regex, или в качестве доступного для поиска символа. Мои результаты показывают, что grep несовместимо решает то, что означает $.
По сути, я сделал основной пример:
$ cat testfile
$illy
$unset
Здесь я хочу видеть, могу ли я захватить строку, заканчивающуюся в "плохо" использовании regex:
$ grep 'illy$' testfile
$illy
Это, кажется, работает, и это интерпретирует критерии 'illy$', поскольку $, являющиеся regex для высказывания ", соответствуют этому выражению в конце строки". Так мои взгляды теперь, то, что grep интерпретирует $ как regex критерии и не строка. Таким образом, если бы я хотел попытаться grep за '$illy', то затем это ничему не должно соответствовать, потому что он интерпретирует $ как regex.
Однако:
$ grep '$illy' testfile
$illy
Почему это находит эту строку? Это доказывает, что даже grep не знает, как интерпретировать символьный $. Уже не говоря о, самостоятельно пытаясь понять это.
grep
Основными регулярными выражениями (BRE) использования по умолчанию, и $
специальный символ в BRE's, единственном в конце выражения.
Если Вы хотите grep
для обработки шаблона как расширенного regexp использовать -E
опция
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see
below).
-
pilot6@Pilot6:~$ grep '$illy' test
$illy
pilot6@Pilot6:~$ grep -E '$illy' test
pilot6@Pilot6:~$
pilot6@Pilot6:~$ grep 'illy$' test
$illy
pilot6@Pilot6:~$ grep -E 'illy$' test
$illy