Comment supprimer tout ce qui se trouve dans un fichier délimité par des tubes après l'avant-dernier tube ? Comme pour la ligne
David|3456|ACCOUNT|MALFUNCTION|CANON|456
le résultat devrait être
David|3456|ACCOUNT|MALFUNCTION
Comment supprimer tout ce qui se trouve dans un fichier délimité par des tubes après l'avant-dernier tube ? Comme pour la ligne
David|3456|ACCOUNT|MALFUNCTION|CANON|456
le résultat devrait être
David|3456|ACCOUNT|MALFUNCTION
Une solution de pur Bash :
while IFS= read -r line || [[ -n $line ]] ; do
printf '%s\n' "${line%|*|*}"
done <inputfile
Véase La lecture des fichiers d'entrée ligne par ligne à l'aide de la commande read dans les scripts shell fait sauter la dernière ligne. (notamment le réponse de Jahid ) pour plus de détails sur la façon dont l while
La boucle fonctionne.
Véase filtrage de motifs en Bash pour des informations sur ${line%|*|*}
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.