Osobně bych zvolil nano -w file.txt
;-) (tj. stačí použít textový editor, nemusí to být samozřejmě nano)
Ale pokud to chcete z nějakého důvodu udělat v neinteraktivním prostředí, můžete použít cat
pro všechny druhy zřetězení:
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
přidá záhlaví a umístí výstup do file2.txt
. Pokud chcete přepsat původní soubor, můžete to udělat pomocí
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
Nebo můžete použít sed
takto:
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
Všimněte si, že používám $'...'
cituji, abych mohl používat \t
reprezentovat tab a \n
reprezentovat nový řádek (mimo jiné substituce; více viz manuálová stránka bash). V tomto typu řetězce v uvozovkách \\
představuje doslovné zpětné lomítko. Takže program předaný do sed je ve skutečnosti
1 i\
name age university city
Neexistuje operátor "prepend" jako operátor "append" >>
, ale můžete zapsat záhlaví do dočasného souboru, poté zkopírovat obsah souboru do dočasného souboru a přesunout jej zpět:
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
Nebo
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file