Comment remplacer la chaîne suivante
hd_ma_prod_customer_ro:*:123456789:john.doe
avec john.doe
Fondamentalement, j'ai besoin de rechercher les derniers deux-points (:) et de tout supprimer avant de l'inclure.
En supposant que ce que vous voulez réellement dire, c'est que vous voulez tout supprimer jusqu'au dernier signe deux-points et laisser le john.doe
intact:
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
sed 's/.*://'
La première ligne redirige simplement la chaîne de test vers sed
à titre d'exemple.
La seconde est une substitution de base sed
. La partie entre le premier et le deuxième /
est l'expression rationnelle à rechercher et la partie entre la deuxième et la troisième est celle par laquelle la remplacer (rien dans ce cas car nous supprimons).
Pour l'expression régulière, .
correspond à n'importe quel caractère, *
répète ce nombre de fois (y compris zéro) et :
correspond à deux points. Si efficacement, c'est tout ce qui est suivi d'un côlon. Depuis .*
peut inclure deux points, la correspondance est "gourmande" et tout jusqu'au dernier deux points est inclus.
sed -r 's/:/\t/g' filename | awk -F'\t' '{print $4}'
Je remplace toutes les occurrences de : par un onglet puis j'utilise awk
pour extraire la chaîne john.doe.
Si vous n'avez pas de fichier, vous pouvez essayer ceci.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' |
awk -F'\t' '{print $4}'
Selon les commentaires de Graeme, nous pouvons utiliser awk
pour imprimer la dernière colonne seule en utilisant la variable NF
de awk
comme ci-dessous.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' | awk -F'\t' '{print $NF}'
Incorporation des commentaires de Graeme pour se débarrasser des sed
inutiles
La commande peut être modifiée comme ci-dessous.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | awk -F':' '{print $NF}'
Une autre méthode utilisant awk
:
awk -F: '{ print $NF }'
S'il vous plaît essayez
modifier: ancre supprimée
echo 'abc:fjk' |sed 's/.*:/john.doe/g'
et supprimer
echo 'abc:fjk' |sed 's/.*://g'