Ajouter un en-tête d'un fichier délimité par des tabulations
Je voudrais ajouter un en-tête d'un fichier délimité par des tabulations, mais je ne suis pas sûr de la façon de le faire en une ligne dans linux.
Permettez-nous de dire que mon fichier est:
roger\t18\tcolumbia\tnew york\n
albert\t21\tdartmouth\tnew london\n
etc...
et maintenant, je voudrais ajouter un en-tête qui dit:
name\tage\tuniversity\tcity
Comment pourrais-je le faire en une ligne dans linux? Je suis ok avec awk, sed, chat, etc. pas familier avec perl.
Demandez-vous comment mettre de la ligne de texte / en-tête au début du fichier?
oui. Je vous vois déjà répondu. merci.
oui. Je vous vois déjà répondu. merci.
OriginalL'auteur Dnaiel | 2012-10-15
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas un "prepend" opérateur comme "ajouter" opérateur
>>
, mais vous pouvez écrire l'en-tête à une température de-fichier, copiez le contenu du fichier dans le temp du dossier après que le, et déplacez-le de nouveau:cat - yourfile
si le chat est d'aller le chercher à son entrée. (Qui est, vous devez donner-
explicitement comme un argument à la cat.)Vous avez absolument raison - faute de frappe de ma part; je vous remercie pour la chasse que pour moi!
OriginalL'auteur newfurniturey
Ou
OriginalL'auteur William Pursell
Personnellement, je aller avec
nano -w file.txt
😉 (c'est à dire il suffit d'utiliser un éditeur de texte, n'a pas à être nano bien sûr)Mais si vous voulez le faire dans un non-interactive de l'environnement pour une raison quelconque, vous pouvez utiliser
cat
pour toutes sortes de concaténations:ajoute l'en-tête et mettre la sortie dans
file2.txt
. Si vous souhaitez écraser le fichier d'origine, vous pouvez le faire avecOu vous pouvez utiliser
sed
comme suit:Remarque que je suis en utilisant
$'...'
citant pour me permettre d'utiliser\t
pour représenter onglet et\n
pour représenter retour à la ligne (entre autres substitutions; voir la page de manuel de bash pour plus de détails). Dans ce type de chaîne de caractères entre guillemets,\\
représente un backslash. Au programme donc passé à sed est en faitShell variables ne s'étend à l'intérieur des guillemets, de sorte que vous aurez à mélanger citant les styles. Heureusement bash permet d'exécuter différents types de chaînes entre guillemets droit les uns contre les autres et il va se joindre à eux en conséquence.
"${shellvar}"$'\t'"${shellvar2}"$'\tuniversity\tcity'
nice, merci beaucoup!
OriginalL'auteur David Z
OriginalL'auteur Vijay
D'abord créer un fichier avec le contenu en tête:
(où
^I
est la touche tab)Puis ajouter aux données
OriginalL'auteur wallyk
OriginalL'auteur WCC