Comment puis-je utiliser awk ou sed pour imprimer une chaîne uniquement jusqu'au premier caractère de soulignement?
Avant:
host100_044 2
host101_045 2
host102_046 2
Après:
host100
host101
host102
unix
bash-scripting
unix-utils
Rubstr
la source
la source
Une autre alternative pour sed:
Si vous les avez dans un fichier, vous pouvez l'appeler comme suit;
la source
Production:
Avec les nouvelles lignes:
Production:
la source
En utilisant
sed
:En utilisant l'
sed
option d'édition sur place,la source
awk
solution est déjà publiée (etcut
est probablement la meilleure dans ce cas), car il m'a posé des questionssed
, mais vous m'avez battu avec quelques secondes :-). Vous pouvez même supprimer le$
, car il correspondra.*
à la fin de la ligne par défaut.Le
-F'_'
demandeawk
d'utiliser des traits de soulignement comme délimiteurs de champ. Leawk
script lui-même imprime simplement le premier champ.la source
Cela imprimera la sortie avant
_
:sed 's/_.*//' -filename
la source