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 lesed
est préféré.