Comment ajouter du texte à la fin de chaque ligne dans unix
Je suis en train de faire un texte opérations de traitement et enfin en mesure d'obtenir un fichier de quelque chose comme cela
india
sudan
japan
france
maintenant, je veux ajouter un commentaire dans le fichier ci-dessus comme dans le fichier final, il devrait être quelque chose comme
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
comme un même commentaire dans le fichier entier. Comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Il existe de nombreuses façons:
sed
: remplacer$
(fin de ligne), avec le texte donné.awk
: imprimer la ligne, plus le texte donné.Enfin, dans le plus pur
bash
: lire ligne par ligne et de l'imprimer avec le texte donné. Remarque ceci est déconseillé comme expliqué dans Pourquoi utiliser une boucle shell de traiter le texte considéré comme une mauvaise pratique?Pour plus d'obfuscation approche:
paste
outil est vraiment très rapide, même pour les grands (>20 MO) fichiers de test.-d
option,paste
se joint à l'aide d'un caractère de tabulation par défaut. Vous pouvez déplacer l'espace pour être à l'avant de la|
, mais vous auriez encore besoin de-d ''
pour supprimer l'onglet.Un autre
awk
time awk '{print $0, "| COUNTRY"' a &>/dev/null
prend environ 0.003 s, tandis quetime awk '$0=$0" | COUNTRY"' a &>/dev/null
autour de 4.03 s. Je suppose que la cession consomme de façon de plus en plus de temps.Vous pouvez également utiliser
xargs
avececho
pour cela:Cela fera
xargs
prendre chaque ligne defile
et de les passer un à un,† à l'echo
commande, en remplaçant le%
(ou quel que soit le personnage que vous choisissez) avec la ligne de saisie.† Par défaut
xargs
va passer plusieurs lignes d'entrée pour une seule commande, en ajoutant tous à sa liste d'arguments. Mais la spécification-I %
faitxargs
mettre l'entrée à l'endroit spécifié dans la commande, et ne mettez qu'un seul, il y à un moment, l'exécution deecho
autant de fois que nécessaire.