Après quelques traitements, j'ai mon fichier d'entrée comme ci-dessous.
fichier1.txt
12345|john|student
43321|jack|professor
78965|alex|lecturer
J'ai besoin de traiter davantage le fichier ci-dessus et j'ai donc également besoin d'un disjoncteur de ligne à la fin de la ligne. Actuellement, je peux l'accomplir comme ci-dessous.
sed 's/$/|/' file1.txt
La commande ci-dessus donne la sortie sous la forme,
12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|
Comme nous pouvons le voir, le |
est également ajouté aux lignes vides. Quand j'ai essayé de supprimer le |
caractère à nouveau à partir de lignes vides en utilisant la commande ci-dessous,
sed 's/|//g' file1.txt
Le |
le personnage est supprimé partout. Comment puis-je supprimer uniquement le |
en lignes vides ? Je dois également conserver la ligne vide.
Réponse acceptée :
À partir de votre original, vous pouvez ajouter |
aux lignes qui ne sont pas vides :
Utilisation de sed
:
sed -e '/^$/!s/$/|/' file
Utiliser perl
:
perl -lpe 's/$/|/ if length' file
Si vous souhaitez supprimer |
à partir de lignes vides (dans la deuxième version) :
perl -lpe 's/|// if length == 1'