GNU/Linux >> Znalost Linux >  >> Linux

Unix Sed Výuka:Jak zapisovat do souboru pomocí Sed

Tento článek je součástí série Unix Sed Tutorial. V předchozích článcích jsme diskutovali o operaci tisku sed , operaci smazání sed a sed najít a nahradit.

V tomto článku se podíváme na to, jak extrahovat část jednoho souboru a zapsat ji do jiného souboru pomocí sed.

Sed poskytuje příkaz „w“ pro zápis dat vzorového prostoru do nového souboru.

Sed vytvoří nebo zkrátí daný název souboru předtím, než přečte první vstupní řádek a zapíše všechny shody do souboru, aniž by soubor zavíral a znovu otevíral.

Syntax: 

#sed 'ADDERSSw outputfile' inputfilename

#sed '/PATTERN/w outputfile' inputfilename

Sed přečte řádek a umístí jej do vyrovnávací paměti vzorů a zapíše vyrovnávací paměť vzorů do daného výstupního souboru podle dodaných příkazů.

Nejprve vytvořte soubor geekstuff.txt, který bude použit ve všech níže uvedených příkladech.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Podívejme se na některé příklady příkazu write v sed.

1. Napište 1. řádek souboru

V tomto příkladu 1 (adresa) odkazuje na první řádek vstupu a w zapisuje vyrovnávací paměť vzorů do výstupního souboru „output.txt“

$ sed -n '1w output.txt' thegeekstuff.txt

$ cat output.txt
1. Linux - Sysadmin, Scripting etc.

2. Napište první a poslední řádek souboru

V tomto příkladu 1 a $ odkazují na první a poslední řádek.

$ sed -n -e '1w output.txt' -e '$w output.txt' thegeekstuff.txt

$ cat output.txt
1. Linux - Sysadmin, Scripting etc.
10.Windows- Sysadmin, reboot etc.

3. Napište řádky, které se shodují se vzorem Storage nebo Sysadmin

V tomto příkladu příkaz sed zapíše řádky, které odpovídají vzoru „Storage“ nebo „Sysadmin“.

$ sed -n -e '/Storage/w output.txt' -e '/Sysadmin/w output.txt' thegeekstuff.txt

$ cat output.txt
1. Linux - Sysadmin, Scripting etc.
5. Storage
10.Windows- Sysadmin, reboot etc.

4. Napište řádky, od kterých se vzor shoduje, až do konce souboru

V tomto příkladu /Storage/,$ představuje shodu řádků od úložiště do konce souboru.

$ sed -n '/Storage/,$w output.txt' thegeekstuff.txt

$ cat output.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

5. Napište řádky, které odpovídají vzoru a další dva řádky ze shody

V tomto příkladu příkaz send zapíše odpovídající řádek pro „Storage“ a dva řádky vedle něj.

$ sed -n '/Storage/,+2w output.txt' thegeekstuff.txt

$ cat output.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

Linux
  1. Výuka Unix Sed:Jak provádět více příkazů Sed

  2. Jak zachytit výstup nejvyššího příkazu Unix do souboru v čitelném formátu

  3. Jak zapíšu stderr do souboru při použití tee s potrubím?

  1. Jak zapsat celé číslo do binárního souboru pomocí Bash?

  2. Jak připojit k souboru v C pomocí Otevřít v režimu O_APPEND na linuxu?

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

  1. Jak nahradit řetězec v souboru (souborech)?

  2. Jak odstranit soubor bez použití rm?

  3. Jak změnit soubor na místě pomocí awk? (jako u sed -i)