Odpowiedzi:
Byłem w stanie to zrobić z odwrotnym ukośnikiem:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
Cytowany mniej niż i cytowany, odwrócony o mniej niż oba, dawał głupie odpowiedzi.
grep -oP '(?< )(.*)$'
na przykład nie działa z pojedynczymi cudzysłowami. Najpierw próbowałem.
(?<! )(.*)$
czy (?<= )(.*)$
?
Dwie proste zasady:
\C
unika następnego znaku, cokolwiek to jest, innego niż nowy wiersz.'text'
unikają znaków między nimi, w tym odwrotnego ukośnika, ale nie zawierają pojedynczego cudzysłowu (ponieważ oznacza on koniec cytowanego tekstu).A zatem:
grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile
Jeśli potrzebujesz przekazać argument zawierający pojedyncze cudzysłowy, możesz użyć '\''
„do ucieczki” pojedynczego cudzysłowu w pojedynczych cudzysłowach. Technicznie rzecz biorąc, oznacza to zakończenie pierwszego tekstu dosłownego, następnie umieszczenie literału '
w tym samym słowie, a następnie bardziej dosłownego tekstu w tym samym słowie.
grep '^D'\''oh!' myfile
Pozostałe zasady cytowania (podsumowane):
!"#$&'()*;<>?[\]^`{|}~
(innymi słowy, następujące znaki są bezpieczne: litery, cyfry %+,-./:=@_
i znaki spoza ASCII)."$\`
i (w powłokach z włączoną historią) !
. Odwrotny ukośnik między podwójnymi cudzysłowami pojawi się w ciągu, chyba że poprzedza jeden z nieliterowych znaków.Te zasady dotyczą bash i innych powłok w stylu Bourne'a (takich jak ash i ksh). Odnoszą się one również do zsh (z wyjątkiem tego, że =
po spacji może być potrzebne cytowanie). Zasady w csh / tcsh i w Fish są różne.