J'ai une variable dans un script shell,le remplacement d'une variable script shell en Perl
var=1234_number
Je veux remplacer tout autre que entier de $ var .. comment puis-je le faire en utilisant un onliner perl?
J'ai une variable dans un script shell,le remplacement d'une variable script shell en Perl
var=1234_number
Je veux remplacer tout autre que entier de $ var .. comment puis-je le faire en utilisant un onliner perl?
Pas besoin d'utiliser autre chose que la coquille pour cette
var=1234_abcd
var=${var%_*}
echo $var # => 1234
Voir « Expansion des paramètres » dans le manuel bash.
Vous cherchez peut-être quelque chose à modifier le script shell, auquel cas, cela pourrait être suffisant:
perl -i.bak -e 's/\b(var=\d+).*/$1/' shellscript.sh
Le « -i
» écrase le fichier original, enregistrer une copie dans shellscript.sh.bak ; la commande de substitution trouve des affectations à 'var' (et non plus un nom se terminant par 'var') suivi d'un signe égal, de quelques chiffres et de tous les non-chiffres, et ne laisse que l'attribution des chiffres.
Dans l'exemple, il donne:
var=1234
Notez que le Perl est regex pas à toute épreuve - il mutiler ce (laissant tomber l'accolade de fermeture).
: ${var=1234_number}
Faire face à toutes ces variantes possibles est extrêmement assez délicate:
echo $var=$other
OTOH, vous pourriez être à la recherche d'éliminer les chiffres d'une variable dans un script shell, auquel cas:
var=$(echo $var | perl -e 's/\D//g')
Vous pouvez également utiliser sed pour le travail:
var=$(echo $var | sed 's/[^0-9]//g')
Merci Jonathan ... Je voulais juste obtenir la sortie comme 1234 var = $ (echo $ var | perl -e 's/\ D // g') - cela a fait le travail :) désolé pour la faute de frappe, $ var = 1234 – nachikethas
Veuillez clarifier - probablement en montrant la sortie requise, et toutes les exclusions. Le 'remplacer tout autre que l'entier de $ var' n'est pas facile à comprendre. –
la sortie devrait être $ var = 1234 – nachikethas
Je suis sûr que le signe dollar n'est pas voulu dans '$ var = 1234'. Demandez-vous quelque chose pour modifier le fichier de script shell dans son ensemble, ou demandez-vous de supprimer les non-chiffres de la variable comme une action dans le script shell? Que faire si la valeur est actuellement '1234_abc_5678'? –