GNU/Linux >> Znalost Linux >  >> Linux

Unix Sed Výuka:Odstraňte řádky souboru pomocí adresy a vzorů

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.

Linux
  1. Jak odstranit prvních N řádků souboru Ascii pomocí příkazů Shell?

  2. Rychlý unixový příkaz pro zobrazení konkrétních řádků uprostřed souboru?

  3. Odstraňte mezery na každém začátku řádku souboru pomocí bash

  1. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  2. Odstraňte prázdné řádky pomocí sed

  3. grep dvojice vzorů a souboru

  1. Tisknout čáry mezi (a vyjma) dvěma vzory?

  2. Tisknout čáry mezi (a včetně) dvěma vzory?

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