Pokud je soubor pouze jeden řádek, můžete použít:
sed 's/^/insert this /' oldfile > newfile
Pokud je to více než jeden řádek. jeden z:
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
Zahrnul jsem to druhé, abyste věděli, jak dělat rozsahy řádků. Oba tyto "nahrazují" značku počátečního řádku na příslušných řádcích textem, který chcete vložit. Můžete také (za předpokladu, že váš sed
je dostatečně moderní) použijte:
sed -i 'whatever command you choose' filename
provádět úpravy na místě.
Pokud chcete přidat řádek na začátek souboru, musíte přidat \n
na konci řetězce v nejlepším řešení výše.
Nejlepší řešení přidá řetězec, ale s řetězcem nepřidá řádek na konec souboru.
sed -i '1s/^/your text\n/' file
Použijte subshell:
echo "$(echo -n 'hello'; cat filename)" > filename
Bohužel substituce příkazů odstraní nové řádky na konci souboru. K jejich zachování lze použít:
echo -n "hello" | cat - filename > /tmp/filename.tmp
mv /tmp/filename.tmp filename
Není potřeba seskupování ani nahrazování příkazů.
sed
může fungovat na adrese:
$ sed -i '1s/^/<added text> /' file
Co je to magické 1s
vidíš tu každou odpověď? Řádkové adresování!.
Chcete přidat <added text>
na prvních 10 řádcích?
$ sed -i '1,10s/^/<added text> /' file
Nebo můžete použít Command Grouping
:
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}