V tomto článku uvidíme různé způsoby, jak přidat záznam záhlaví nebo záznam přívěsu do souboru.
Uvažujme soubor, soubor1.
$ cat file1 apple orange grapes banana
Přidání řádku na začátek souboru (záhlaví)
1. Chcete-li přidat záznam záhlaví pomocí sed:
$ sed '1i some text at the beginning' file1 some text at the beginning apple orange grapes banana
„1i“ v sed obsahuje (i) řádek nějaký text na začátku pouze před prvním řádkem (1) souboru. Výše uvedený příkaz zobrazí obsah souboru spolu se záhlavím bez aktualizace souboru. Chcete-li aktualizovat samotný původní soubor, použijte volbu -i sed, jak je uvedeno níže:
$ sed -i.bkp '1i some text at the beginning' file1
Volba -i.bkp vytvoří záložní soubor s názvem file1.bkp před provedením jakýchkoli změn v původním souboru. Přípona .bkp může být jakákoliv dle vašeho výběru.
2. Pro vložení řádku záhlaví můžete také použít tento příklad sed:
$ sed '1s/^/some text at the beginning\n/' file1
„1“ označuje číslo řádku, které se bude shodovat pouze při provádění substituce příkazem „s“. Symbol „^“ označuje začátek řádku. Všimněte si také konce řádku „\n“ přidaného na konec, což pomáhá vytisknout nový řádek po nahrazení.
3. Můžete také použít příkaz cat s příkazem bash printf k přidání řádku na začátek souboru.
$ printf '%b' 'some text at the beginning\n' | cat - file1
4. Chcete-li přidat záznam záhlaví do souboru pomocí awk:
$ awk 'BEGIN{print "some text at the beginning"}1' file1 some text at the beginning apple orange grapes banana
BEGIN příkaz v awk vytvoří na začátku příkazu nějaký text, který se před zpracováním souboru vytiskne, a proto se ve výstupu objeví záhlaví. 1 znamená, že se má vytisknout každý řádek souboru.
Přidání řádku na konec souboru (trailer)
1. Nejjednodušší ze všech příkazů je zde jednoduchý pomocí přesměrování k připojení řádku na konec souboru. Například:
$ echo "some text at the end" >> file1
2. Chcete-li přidat záznam přívěsu do souboru pomocí sed:
$ sed '$a some text at the end' file1 apple orange grapes banana some text at the end
$a přiměje sed připojit(a) k příkazu nějaký text na konec pouze za poslední řádek($) souboru.
3. Chcete-li přidat záznam upoutávky do souboru pomocí awk:
$ awk '1;END{print "some text at the end"}' file apple orange grapes banana some text at the end
END label provede tisk výpisu až po zpracování souboru. 1 je tisknout každý řádek. 1 ve skutečnosti znamená pravda.
sed na MAC OSX
sed se na MAC OS chová trochu jinak ve srovnání s GNU sed. Můžete zkusit níže uvedený příklad pro přidání řádku záhlaví do souboru v MAC.
$ sed -i '.bak' '1s/^/some text at the beginning\'$'\n/g' file1