J'ai un fichier avec une ligne qui a VERSION: X.X.X
Je veux retourner sur la console juste la partie X.X.X de la ligne.
Premièrement, je dois obtenir la ligne que je fais avec
sed -n 14p filename.txt
Je suis juste un peu perdu quant à la façon dont je procéderais pour renvoyer uniquement les 5 derniers caractères de la ligne plutôt que la ligne complète.
3 Réponses :
Ma première pensée:
sed 's/.*\(.\{5\}\)$/\1/'
Mais avec sed vous pouvez remplacer:
rev | cut -c-5 | rev
p>
Vous pouvez utiliser
sed -n '14 s/VERSION *: *//p' file
Voir la démo sed en ligne p>
Avec s / VERSION *: * // , vous supprimerez simplement la VERSION , 0 ou plusieurs espaces, : , 0 espace ou plus.
Pourriez-vous essayer de suivre.
VERSION : X . X . X
^ ^ ^ ^ ^
| | | | |
-4 -3 -2 -1 Last character/letter of this line(so this becomes 1 character out of 5.
That's why we need to mention -4 in length($0)-4 so that it takes value till last character).
Brève explication: Recherche d'une ligne contenant la chaîne VERSION code > puis en utilisant subtr pour imprimer la sous-chaîne, de la longueur 4 jusqu'au dernier caractère de la ligne.
Sur la question de OP pourquoi nous devons écrire dans le code length ($ 0) -4 NOT length($0)-5: Permet de le comprendre de la manière suivante:
awk '/VERSION/{print substr($0,length($0)-4)}' Input_file
@ Shox2711, Non, ce sera -4 seulement voir la sortie sera X.X.X comme suit cela fonctionne très bien.
@ Shox2711, j'ai également ajouté une explication dans ma solution pour substr .
Pourquoi ne pas obtenir la troisième «colonne»?
awk '{print $ 3}'Je vous demande pourquoi lesedest préféré.