Comment ajouter une chaîne à une colonne spécifique dans un fichier qui n'est pas un espace blanc.
cat fichier.txt
abc
defg
xy
Maintenant, je veux ajouter la chaîne "test" dans la colonne 8 du fichier.txt. Mais la colonne 8 n'est pas un espace blanc, comment puis-je ajouter une chaîne?
CA devrait etre -
abc test
defg test
xy test
Merci
--- Vishal
Il semble que vous souhaitiez imprimer le premier champ justifié à gauche dans une largeur de champ de 8:
$ awk -v s=test '{printf "%-8s%s\n", $1, s}' file.txt
abc test
defg test
xy test
Solution assez rapide et sale en utilisant paste
, yes
et head
:
paste file.txt <(yes test | head -n 3)
yes
imprime des lignes sans fin de test
head
obtient uniquement les trois premières lignes de yes
<(...)
redirige la sortie de ...
dans paste
en tant que fichier d'entréepaste
joint les deux fichiers d'entréeL'utilisation de la commande sed devrait aider avec ceci:
sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
Soit exécuter:
Et créé une sauvegarde:
sed -i.bak -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
Rediriger dans un autre fichier:
sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt > result.txt
Résultats:
abc test
defg test
xy test
Info:
([[:alpha:]])
: capturer les alphabets\1 \ttest
: renvoie le groupe capturé et ajoute une tab
et le mot test
-E
: Option regex étendue pour la portabilité.