V předchozím tutoriálu sed jsme diskutovali o základech příkazů Unix sed a tisku řádků ze souboru pomocí adresy a vzorů sed .
V tomto článku se podíváme na to, jak odstranit řádky ze souboru pomocí adresy a vzorů s 8 úžasnými příklady.
- Příkaz „p“ vytiskne vyrovnávací paměť (nezapomeňte použít volbu -n s „p“)
- Příkaz „d“ je právě opačný, slouží k vymazání. ‘d‘ vymaže vyrovnávací paměť prostoru vzoru a okamžitě spustí další cyklus.
Syntax: # sed 'ADDRESS'd filename # sed /PATTERN/d filename
Syntaxe pro ADRESY a VZORKY uvedené v tisku platí také pro mazání, kromě volby -n. (-n pouze pro potlačení vyrovnávací paměti tiskového vzoru, lze použít s příkazem „p“ )
Nejprve vytvoříme 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.
1. Smazat n-tý řádek
‚Nd‘ odstraní N-tý řádek a vytiskne ostatní řádky.
sed název souboru ‚Nd‘
Podle metodiky sed
- Přečte první řádek a umístí se do vyrovnávací paměti vzorů.
- Zkontrolujte, zda je zadaný příkaz pro tento řádek pravdivý, pokud je pravdivý, vymaže vyrovnávací paměť vzorového prostoru a spustí další cyklus. tj. Přečtěte si další řádek.
- Pokud zadaný příkaz nemá hodnotu true, jako normální chování vypíše obsah vyrovnávací paměti prostoru vzorů.
Například 3d odstraní 3. řádek a vytiskne další řádky, jak je znázorněno níže.
$ sed 3d thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 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.
2. Smazat Počínaje 3. řádkem a dále každý 2. řádek.
$ sed '3~2d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 4. Security (Firewall, Network, Online Security etc) 6. Cool gadgets and websites 8. Website Design 10.Windows- Sysadmin, reboot etc.
3. Smazat 4. až 8. řádek ze souboru.
$ sed '4,8d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 9. Software Development 10.Windows- Sysadmin, reboot etc.
4. Smažte poslední řádek ze vstupu.
$ sed '$d' 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
5. Odstraňte ze vstupu řádek, který odpovídá danému vzoru.
Například níže uvedený příkaz odstraní řádek, který odpovídá „Sysadmin“.
$ sed /Sysadmin/d thegeekstuff.txt 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
6. Odstraní řádek, který odpovídá danému vzoru, až po konec souboru.
$ sed '/Website/,$d' 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)
7. Smaže řádek, který odpovídá danému vzoru, a 2 řádky vedle něj.
$ sed '/Storage/,+2d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
8. Odstraňte prázdný řádek ze souboru pomocí sed
Prázdné řádky můžete také odstranit pomocí sed. Následující příklad sed ukazuje, jak používat sed a jak odstranit prázdné řádky.
$ sed '/^$/d' 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.