GNU/Linux >> Znalost Linux >  >> Linux

Jak vložit text na začátek souboru?

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,}

Linux
  1. Jak vložit text na začátek každého řádku ve Vimu

  2. Jak přidat nový řádek na konec souboru?

  3. Jak vložit text před první řádek souboru?

  1. Zobrazit všechny soubory až do shody?

  2. Jak najít nesrovnatelné závorky v textovém souboru?

  3. Jak připojit výstup do souboru?

  1. Jak mohu přidat řetězec na začátek každého souboru ve složce v bash?

  2. Jak přesměrovat výstup system() do souboru?

  3. Jak uložit výstup tohoto příkazu awk do souboru?