Risposte:
Sono stato in grado di farlo con una barra rovesciata:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
Un citato meno di, e un citato, rovesciato meno di entrambi hanno dato risposte sciocche.
grep -oP '(?< )(.*)$'
ad esempio non funziona con virgolette singole. L'ho provato all'inizio.
(?<! )(.*)$
o (?<= )(.*)$
?
Due semplici regole:
\C
sfugge al personaggio successivo, qualunque esso sia, diverso da una nuova riga.'text'
sfuggono a qualsiasi carattere tra loro, inclusa una barra rovesciata, ma non includono una virgoletta singola (poiché segna la fine del testo tra virgolette).Così:
grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile
Se è necessario passare un argomento che contiene virgolette singole, è possibile utilizzare '\''
per "sfuggire" a una virgoletta singola all'interno di virgolette singole. Tecnicamente, ciò che fa è terminare il primo testo letterale, quindi inserire un letterale '
nella stessa parola, quindi più testo letterale sempre nella stessa parola.
grep '^D'\''oh!' myfile
Il resto delle regole di quotazione (riepilogate):
!"#$&'()*;<>?[\]^`{|}~
(in altre parole, i seguenti caratteri sono sicuri: lettere, cifre %+,-./:=@_
e caratteri non ASCII)."$\`
e (nelle shell con la cronologia abilitata) !
. Una stringa tra parentesi doppie apparirà nella stringa a meno che non preceda uno dei caratteri non letterali.Queste regole sono per bash e altre shell in stile Bourne (come ash e ksh). Si applicano anche a zsh (tranne per il fatto che =
dopo gli spazi bianchi potrebbe essere necessario un preventivo). Le regole in csh / tcsh e in Fish sono diverse.