Я хотел бы использовать grep
с выражением PCRE, которое содержит <
символ. Баш думает, что я хочу перенаправить, но я не хочу. Как я могу сбежать <
?
10
Я хотел бы использовать grep
с выражением PCRE, которое содержит <
символ. Баш думает, что я хочу перенаправить, но я не хочу. Как я могу сбежать <
?
Я смог сделать это с обратной косой чертой:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
Процитированный менее чем, и процитированный, обратный слэш меньше, чем оба дали глупые ответы.
grep -oP '(?< )(.*)$'
, не работает с одинарными кавычками. Попробовал сначала.(?<! )(.*)$
или(?<= )(.*)$
?Два простых правила:
\C
экранирует следующий символ, независимо от новой строки.'text'
экранируют любой символ между ними, включая обратную косую черту, но не включают в себя одинарные кавычки (так как они отмечают конец текста в кавычках).Таким образом:
Если вам нужно передать аргумент, содержащий одинарные кавычки, вы можете использовать
'\''
«экранирование» одинарных кавычек внутри одинарных кавычек. Технически, это то, что заканчивается первым литеральным текстом, затем помещает литерал'
в то же самое слово, затем более литеральный текст все еще в том же слове.Остальные правила цитирования (суммированы):
!"#$&'()*;<>?[\]^`{|}~
(другими словами, следующие символы безопасны: буквы, цифры%+,-./:=@_
и не-ASCII символы)."$\`
и (в оболочках с включенной историей)!
. Обратная косая черта между двойными кавычками будет появляться в строке, если она не предшествует одному из не-литеральных символов.Эти правила относятся к bash и другим оболочкам в стиле Bourne (например, ash и ksh). Они также применимы к zsh (за исключением того, что
=
после пробела может потребоваться цитирование). Правила в csh / tcsh и в Fish различны.источник