Eu gostaria de usar grep
com uma expressão PCRE que contém o <
personagem. Bash acha que quero redirecionar, mas não quero. Como posso escapar <
?
10
Eu gostaria de usar grep
com uma expressão PCRE que contém o <
personagem. Bash acha que quero redirecionar, mas não quero. Como posso escapar <
?
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:
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.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.fonte