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)