GNU/Linux >> Znalost Linux >  >> Linux

Jak vložím text do 1. řádku souboru pomocí sed?

Předpokládejme, že máte file takhle:

one
two

Poté pro připojení k prvnímu řádku:

$ sed '1 s_$_/etc/example/live/example.com/fullchain.pem;_' file
one/etc/example/live/example.com/fullchain.pem;
two

Vložení před první řádek:

$ sed '1 i /etc/example/live/example.com/fullchain.pem;' file
/etc/example/live/example.com/fullchain.pem;
one
two

Nebo pro připojení za první řádek:

$ sed '1 a /etc/example/live/example.com/fullchain.pem;' file
one
/etc/example/live/example.com/fullchain.pem;
two

Poznamenejte si číslo 1 v těchto sed výrazy – tomu se říká adresa v sed terminologie. Řekne vám, na jakém řádku příkaz, který následuje, má fungovat.

Pokud váš soubor neobsahuje řádek, který adresujete, sed příkaz nebude proveden. To je důvod, proč nemůžete vložit/připojit na řádek 1, pokud je váš soubor prázdný.

Namísto použití editoru streamů , pro připojení (k prázdným souborům) stačí použít přesměrování shellu >> :

echo "content" >> file

Váš problém pramení ze skutečnosti, že sed nemůže najít řádek, na který má psát, například:

touch test
sed -i -e '1i/etc/example/live/example.com/fullchain.pem;\' test

pokusí se o zápis vložit na řádek 1 test , ale tato čára v tuto chvíli neexistuje. Pokud jste soubor vytvořili jako:

echo -en "\n" > test
sed -i '1i/etc/example/live/example.com/fullchain.pem;\' test

to by si nestěžovalo, ale měli byste o řádek navíc. Podobně, když zavoláte:

sed -i "2i ssl_certificate_key /etc/example/live/example.com/privkey.pem;"

říkáte sed pro vložení následujících dat na řádek 2, které v tomto bodě neexistují, takže sed nemůže soubor upravit.

Takže pro počáteční řádek nebo poslední řádek v souboru byste neměli používat sed protože jednoduché > a >> přesměrování streamu je více než dost.


Váš příkaz bude fungovat, pokud se ujistíte, že vstupní soubor má alespoň jeden řádek:

[ "$(wc -l < test)" -gt 0 ] || printf '\n' >> test
sed -i -e '1 i/etc/example/live/example.com/fullchain.pem;\' test

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

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

  3. Jak posunout řádek v textovém souboru nahoru nebo dolů o jeden řádek?

  1. Jak odstranit více náhodných řádků z textového souboru pomocí Sed?

  2. Jak příkaz Sed ‚1!g;h;$!d‘ obrátí obsah souboru?

  3. Jak nahradit text podobný sedu pythonem?

  1. Naučte se používat textový editor Sed

  2. Jak extrahovat soubor tar.gz v Linuxu pomocí příkazového řádku

  3. Jak načíst poslední řádek textového souboru do proměnné pomocí Bash?