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:
\Csfugge 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.