Comment puis-je grep pour une valeur d'une variable d'environnement?
J'ai essayé de grep exacte shell 'variable' a l'aide des limites de mots,
grep "\<$variable\>" file.txt
mais n'ont pas réussi; j'ai tout essayé mais je n'ai pas réussi.
En fait, je suis en invoquant grep
à partir d'un script Perl:
$attrval=`/usr/bin/grep "\<$_[0]\>" $upgradetmpdir/fullConfiguration.txt`
$_[0]
et $upgradetmpdir/fullConfiguration.txt
contient quelques matching "texte".
Mais $attrval
est vide après l'opération.
"<" et ">" ne sont pas les limites de mot pour tout grep, je suis familier avec. Le système d'exploitation qu'est-ce? Êtes-vous intéressé à littéralement "$variable" ou l'expansion de celui-ci? Vous tagged cette "coquille" et "perl"; qui est-il?
J'ai mis à jour la question, avoir un coup d'oeil.
Vous avez à vous soucier de combien de fois les barres obliques inverses sont interprétées. Perl est de dépouiller les barres obliques inverses; l'argument que "grep" voit ne contient pas les barres obliques inverses. Vous auriez besoin de doubler les barres obliques inverses dans le code Perl pour obtenir l'effet.
Aussi, il serait pratiquement aussi facile à faire que tous en Perl que le décrochage en shell. Je suis assez sûr qu'il y a un module qui permettrait de le faire automatiquement: f'rinstance search.cpan.org/~mneylon/Fichier-Grep-0.02
J'ai mis à jour la question, avoir un coup d'oeil.
Vous avez à vous soucier de combien de fois les barres obliques inverses sont interprétées. Perl est de dépouiller les barres obliques inverses; l'argument que "grep" voit ne contient pas les barres obliques inverses. Vous auriez besoin de doubler les barres obliques inverses dans le code Perl pour obtenir l'effet.
Aussi, il serait pratiquement aussi facile à faire que tous en Perl que le décrochage en shell. Je suis assez sûr qu'il y a un module qui permettrait de le faire automatiquement: f'rinstance search.cpan.org/~mneylon/Fichier-Grep-0.02
OriginalL'auteur Gaurav | 2010-02-16
Vous devez vous connecter pour publier un commentaire.
@OP, vous devriez le faire 'grepping' en Perl. ne pas appeler les commandes du système inutilement à moins qu'il n'y a pas le choix.
OriginalL'auteur ghostdog74
Je ne vois pas le problème ici:
file.txt:
Maintenant,
Exactement ce qui ne fonctionne pas pour vous?
ah, mes excuses
OriginalL'auteur Mala
Pas tous grep prend en charge l'ex(1) /vi(1) limite de mot de syntaxe.
Je pense que je voudrais juste faire:
OriginalL'auteur DigitalRoss
D'utiliser des guillemets simples travaille pour moi dans
tcsh
:Je suis en supposant que le fichier d'entrée contient la chaîne littérale:
<$variable>
Je pense que Guaurav doit montrer un petit échantillon de son fichier d'entrée, sa sortie souhaitée, et de confirmer que
$variable
devrait être élargi par le shell. Lorsque plus d'informations deviennent disponibles, je vais mettre à jour ma réponse.J'ai mis à jour la question, avoir un coup d'oeil.
OriginalL'auteur toolic
Si
variable=foo
êtes-vous essayer degrep
pour "toto"? Si oui, cela fonctionne pour moi. Si vous essayez degrep
pour la variable "$variable", puis modifiez les guillemets pour les guillemets simples.Je sais. Et ça marche pour moi, l'utilisation de GNU grep 2.5.4
OriginalL'auteur Dennis Williamson
Sur un linux récent qu'il fonctionne comme prévu. Ne pourrait essayer
egrep
au lieuOriginalL'auteur stacker
Dire que vous avez
Puis avec le programme suivant
vous obtiendrez à la sortie de
Il utilise le
-P
passer à GNU grep qui correspond expressions régulières de Perl. La fonctionnalité est encore au stade expérimental, afin de procéder avec soin.Notez également l'utilisation de
système de LISTE
qui contourne shell citant le, ce qui lui permet spécifier des arguments avec Perl citer des règles plutôt que de l'environnement.Vous pouvez utiliser le
-w
(ou--word-regexp
) de l'interrupteur, comme danspour obtenir le même résultat.
OriginalL'auteur Greg Bacon
L'aide de la seule citation il l'habitude de travailler. Vous devriez aller pour le guillemet double
Par exemple:
OriginalL'auteur Mari