Je voudrais utiliser grep
une expression PCRE contenant le <
caractère. Bash pense que je veux rediriger, mais je ne veux pas. Comment puis-je m'échapper <
?
10
Je voudrais utiliser grep
une expression PCRE contenant le <
caractère. Bash pense que je veux rediriger, mais je ne veux pas. Comment puis-je m'échapper <
?
J'ai pu le faire avec une barre oblique inverse:
25 % grep \< xmospos.c
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <X11/Xlib.h>
Une citation inférieure à, et une citation, moins inversée que les deux ont donné des réponses maladroites.
grep -oP '(?< )(.*)$'
ne fonctionne pas avec des guillemets simples par exemple. J'ai essayé au début.(?<! )(.*)$
ou(?<= )(.*)$
?Deux règles simples:
\C
échappe au personnage suivant, quel qu'il soit, autre qu'une nouvelle ligne.'text'
échappent à tout caractère entre eux, y compris une barre oblique inverse, mais sans inclure de guillemet simple (car il marque la fin du texte cité).Donc:
Si vous devez passer un argument contenant des guillemets simples, vous pouvez utiliser
'\''
pour «échapper» un guillemet simple à l'intérieur de guillemets simples. Techniquement, cela finit par mettre fin au premier texte littéral, puis à mettre un littéral'
dans le même mot, puis un texte plus littéral toujours dans le même mot.Le reste des règles de cotation (résumées):
!"#$&'()*;<>?[\]^`{|}~
(en d'autres termes, les caractères suivants sont sûrs: lettres, chiffres%+,-./:=@_
et caractères non ASCII)."$\`
et (dans les shells avec l'historique activé)!
. Une barre oblique inverse entre guillemets doubles apparaîtra dans la chaîne, sauf si elle précède l'un des caractères non littéraux.Ces règles s'appliquent aux bash et autres shells de style Bourne (tels que ash et ksh). Ils s'appliquent également à zsh (sauf
=
qu'après les espaces, il peut être nécessaire de les citer). Les règles dans csh / tcsh et dans Fish sont différentes.la source