Ich persönlich würde nano -w file.txt
wählen;-) (also einfach einen Texteditor verwenden, muss natürlich nicht nano sein)
Wenn Sie dies jedoch aus irgendeinem Grund in einer nicht interaktiven Umgebung tun möchten, können Sie cat
verwenden für alle Arten von Verkettungen:
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
wird dem Header vorangestellt und die Ausgabe in file2.txt
eingefügt . Wenn Sie die Originaldatei überschreiben möchten, können Sie dies mit
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
Oder Sie könnten sed
verwenden wie folgt:
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
Beachten Sie, dass ich $'...'
verwende Zitieren, damit ich \t
verwenden darf um Tab und \n
darzustellen um Zeilenumbrüche darzustellen (neben anderen Ersetzungen; siehe die Bash-Manpage für mehr). In dieser Art von Zeichenfolge in Anführungszeichen \\
steht für einen wörtlichen Backslash. Das an sed übergebene Programm ist also eigentlich
1 i\
name age university city
Es gibt keinen „prepend“-Operator wie den „append“-Operator >>
, aber Sie können den Header in eine temporäre Datei schreiben, den Inhalt Ihrer Datei danach in die temporäre Datei kopieren und sie zurück verschieben:
echo -e "name\tage\tuniversity\tcity" | cat - yourfile > /tmp/out && mv /tmp/out yourfile
$ { printf 'name\tage\tuniversity\tcity\n'; cat orig-file; } > new-file
Oder
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file