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