Je suis nouveau dans le script et je dois écrire un script pour supprimer le délimiteur indésirable de la dernière ligne du fichier plat qui changera de manière dynamique.
par exemple: p>
1|AK|1,asd|CHN|TN|IN|600001 2|AK|1,asd|CHN|TN|IN|600001 AK|10-01-2019|2||||
3 Réponses :
La documentation pour Perl's Split () code>
fonction dit ceci:
Si la limite est omise (ou, de manière équivalente à zéro), elle est généralement traitée comme si elle était plutôt négative mais à l'exception que les champs vides de fuite sont supprimés (les champs de tête à vide sont toujours préservés) P> BlockQuote>
Ainsi, le comportement par défaut de
Split () code> est de supprimer les champs vides de fin. Nous pouvons ensuite utiliser
Joindre () code>
pour régénérer l'original Enregistrez moins tous les délimiteurs de fin. p>afin qu'il puisse être aussi simple que: p>
xxx pré> ou, le mettre dans un programme complet qui se lit à partir de
Stdin code> et écrit à
stdout code>: p>
xxx pré> si vous mettez cela dans un fichier appelé
rmTrailing code>, puis Il peut être exécuté à partir d'une ligne de commande comme ceci: p>
xxx pré> p>
Les éléments suivants supprimeront les tuyaux de fin de toutes les lignes:
perl -nle' print($prev) if defined($prev); $prev = $_; END { if (defined($prev)) { $prev =~ s/\|+\z//; print($prev); } } '
Ce SED One-Liner effectuera le travail: Vous voyez que seule la dernière ligne a été modifiée. . p> p> test: h3>
Qu'avez-vous essayé? Quels problèmes as-tu? S'il vous plaît montrez-nous votre code.