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.