Respostas:
Consegui fazer isso com uma barra invertida:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
Um citado menos que, e um citado, com barra invertida menos que ambos deram respostas tolas.
grep -oP '(?< )(.*)$'
não funciona com aspas simples, por exemplo. Tentei no começo.
(?<! )(.*)$
ou (?<= )(.*)$
?
Duas regras simples:
\C
escapa ao próximo caractere, seja ele qual for, exceto uma nova linha.'text'
escapam a qualquer caractere entre elas, incluindo uma barra invertida, mas sem incluir uma única aspas (pois marca o final do texto citado).Portanto:
grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile
Se você precisar passar um argumento que contenha aspas simples, poderá usar '\''
para "escapar" de uma aspas simples dentro de aspas simples. Tecnicamente, o que isso faz é finalizar o primeiro texto literal e, em seguida, colocar um literal '
na mesma palavra, depois mais texto literal ainda na mesma palavra.
grep '^D'\''oh!' myfile
O restante das regras de cotação (resumido):
!"#$&'()*;<>?[\]^`{|}~
em branco e (em outras palavras, os seguintes caracteres são seguros: letras, dígitos %+,-./:=@_
e caracteres não ASCII)."$\`
e (em shells com histórico ativado) !
. Uma barra invertida entre aspas duplas aparecerá na cadeia, a menos que preceda um dos caracteres não literais.Essas regras são para bash e outras conchas no estilo Bourne (como ash e ksh). Eles também se aplicam ao zsh (exceto que =
após o espaço em branco poder ser necessário citar). As regras no csh / tcsh e no Fish são diferentes.