GNU/Linux >> Linux Esercitazione >  >> Linux

Esercitazione Unix Sed:Elimina le righe di file utilizzando l'indirizzo e i modelli

Nel precedente tutorial sed abbiamo discusso delle basi del comando sed di Unix e della stampa di righe da un file utilizzando l'indirizzo sed e i modelli .

In questo articolo, esaminiamo come eliminare le righe da un file utilizzando indirizzi e schemi con 8 fantastici esempi.

  • Il comando “p” stampa il buffer (ricordarsi di usare l'opzione -n ​​con “p”)
  • Il comando "d" è esattamente opposto, è per l'eliminazione. 'd' cancellerà il pattern space buffer e avvierà immediatamente il ciclo successivo.
Syntax:

# sed 'ADDRESS'd filename

# sed /PATTERN/d filename

La sintassi per INDIRIZZI e MODELLI fornita nella stampa è applicabile anche per l'eliminazione, ad eccezione dell'opzione -n. (-n solo per sopprimere il buffer del modello di stampa, può essere utilizzato con il comando "p")

Per prima cosa creiamo il file geekstuff.txt che verrà utilizzato in tutti gli esempi menzionati di seguito.

# 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. Elimina l'ennesima riga

'Nd' cancella l'ennesima riga e stampa le altre righe.

sed nome file 'Nd'

Come da metodologia sed,

  • Legge la prima riga e la inserisce nel suo pattern buffer.
  • Controlla se il comando fornito è vero per questa riga, se vero, elimina il buffer dello spazio del modello e avvia il ciclo successivo. cioè Leggi la riga successiva.
  • Se il comando fornito non è vero, come suo normale comportamento stampa il contenuto del pattern space buffer.

Ad esempio, 3d elimina la 3a riga e stampa altre righe come mostrato di seguito.

$ 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. Elimina A partire dalla 3a riga e ogni 2a riga da lì.

$ 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. Elimina dalla 4a all'8a riga dal file.

$ 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. Elimina l'ultima riga dall'input.

$ 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. Elimina la riga che corrisponde al modello dato dall'input.

Ad esempio, il comando seguente elimina la riga che corrisponde a "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. Elimina la riga da cui corrisponde il modello dato alla fine del file.

$ 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. Elimina la riga da cui corrisponde il modello dato e 2 righe accanto a quella.

$ 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. Elimina la riga vuota da un file usando sed

Puoi anche rimuovere le righe vuote con sed. Il seguente esempio di sed mostra come usare sed e rimuovere le righe vuote.

$ 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. Utilizzo di sed per trovare e sostituire file di testo in Linux

  2. Stampa linee tra (ed escludendo) due motivi?

  3. Come eliminare più righe casuali da un file di testo utilizzando Sed?

  4. Come eliminare le prime N righe di un file Ascii utilizzando i comandi della shell?

  5. Comando unix rapido per visualizzare righe specifiche nel mezzo di un file?

Esercitazione Unix Sed:stampa di righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Tutorial Unix Sed:come scrivere su un file usando Sed

Tutorial Unix Sed:aggiungi, inserisci, sostituisci e conta righe di file

Tutorial Unix Sed:7 esempi di operazioni Sed Hold e Pattern Buffer

Tutorial Unix Sed:operazione su file multilinea con 6 esempi pratici