Esaminiamo come stampare righe di file utilizzando indirizzi e modelli in questa prima parte di sed tutorial.
Nelle prossime settimane pubblicheremo diversi fantastici tutorial di sed con esempi.
Introduzione a Unix Sed
- sed è un editor orientato al flusso "non interattivo". Poiché è un "non interattivo", può essere utilizzato per automatizzare la modifica, se lo si desidera.
- Il nome sed è l'abbreviazione di stream editor e l'utilità deriva molti dei suoi comandi da ed line-editor (ed è stato il primo editor di testo UNIX).
- Ciò ti consente di modificare più file o di eseguire operazioni di modifica comuni senza dover mai aprire vi o emacs.
- sed legge da un file o dal suo standard input e invia l'output al suo standard output.
- sed ha due buffer chiamati pattern buffer e hold buffer. Entrambi sono inizialmente vuoti.
Metodologia di lavoro Unix Sed
Questo è chiamato come un ciclo di esecuzione. Il ciclo continua fino al raggiungimento della fine del file/input.
- Leggi un'intera riga da stdin/file.
- Rimuove qualsiasi nuova riga finale.
- Posiziona la linea, nel suo pattern buffer.
- Modifica il pattern buffer secondo i comandi forniti.
- Stampa il pattern buffer su stdout.
Operazione di stampa in Sed
Il comando Linux Sed ti consente di stampare solo righe specifiche in base al numero di riga o alle corrispondenze del modello. "p" è un comando per stampare i dati dal pattern buffer.
Per sopprimere la stampa automatica dello spazio del modello utilizzare il comando -n con sed. L'opzione sed -n non stamperà nulla, a meno che non venga trovata una richiesta esplicita di stampa.
Syntax: # sed -n 'ADDRESS'p filename # sed -n '/PATTERN/p' filename
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.
5 Esempi di formato Sed ADDRESS
Formato indirizzo Sed 1:NUMERO
Questo corrisponderà solo all'ennesima riga nell'input.
# sed -n 'N'p filename
Ad esempio, 3p stampa la terza riga del file di input thegeekstuff.txt come mostrato di seguito.
# sed -n '3'p thegeekstuff.txt 3. Hardware
Formato indirizzo Sed 2:NUMERO1~NUMERO2
M~N con il comando "p" stampa ogni Nesima riga a partire dalla riga M.
# sed -n 'M~N'p filename
Ad esempio, 3~2p stampa ogni 2a riga a partire dalla 3a riga come mostrato di seguito.
# sed -n '3~2'p thegeekstuff.txt 3. Hardware 5. Storage 7. Productivity (Too many technologies to explore, not much time available) 9. Software Development
Formato indirizzo Sed 3:START,END
M,N con il comando "p" stampa la M-esima riga nell'N-esima riga.
# sed -n 'M,N'p nomefile
Ad esempio, 4,8p stampa dalla 4a riga all'8a riga dal file di input thegeekstuff.txt
# sed -n '4,8'p thegeekstuff.txt 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
Formato indirizzo Sed 4:'$' Ultima riga
$ con il comando "p" corrisponde solo all'ultima riga dell'input.
# sed -n '$'p nomefile
Ad esempio, $p stampa solo l'ultima riga come mostrato di seguito.
# sed -n '$'p thegeekstuff.txt 10.Windows- Sysadmin, reboot etc.
Formato indirizzo Sed 5:NUMBER,$
N,$ con il comando "p" stampa dall'ennesima riga alla fine del file.
# sed -n 'N,$p' nomefile
Ad esempio 4,$p stampa dalla 4a riga alla fine del file.
# sed -n '4,$p' thegeekstuff.txt 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.
6 Esempi di formato PATTERN Sed
Formato modello Sed 1:MODELLO
PATTERN potrebbe essere un'espressione regolare unix. Il comando seguente stampa solo la riga che corrisponde al modello specificato.
# sed -n /PATTERN/p filename
Ad esempio, di seguito viene stampata solo la riga che corrisponde al pattern “Sysadmin”.
# sed -n /Sysadmin/p thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 10.Windows- Sysadmin, reboot etc.
Formato modello Sed 2:/PATTERN/,INDIRIZZO
# sed -n '/PATTERN/,Np' nomefile
Ad esempio, di seguito vengono stampate le righe che corrispondono al modello all'ennesima riga, dall'input. La 3a riga corrisponde al modello "Hardware", quindi stampa dalla 3a alla 6a riga.
# sed -n '/Hardware/,6p' thegeekstuff.txt 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites
Sed Pattern Formato 3:INDIRIZZO,/PATTERN/
Stampa dall'ennesima riga dell'input, alla riga che corrisponde al modello. Se il modello non corrisponde, viene stampato fino alla fine dell'input.
# sed -n 'N,/PATTERN/p' nome file
Ad esempio, la 4a riga corrisponde al modello "Sicurezza", quindi viene stampata dalla 3a alla 4a riga.
# sed -n '3,/Security/p' thegeekstuff.txt 3. Hardware 4. Security (Firewall, Network, Online Security etc)
Formato modello Sed 4:/PATTERN/,$
Stampa dalla riga che corrisponde al modello specificato alla fine del file.
# sed -n '/PATTERN/,$p' nomefile
# sed -n '/Website/,$p' thegeekstuff.txt 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
Formato modello Sed 5:/PATTERN/,+N
Stampa le righe che corrispondono al modello e le successive N righe che seguono la riga abbinata.
# sed -n '/PATTERN/,+Np' filename
Ad esempio, in seguito viene stampata la quinta riga che corrisponde al modello /Storage/ e le due righe successive su /Storage/.
# sed -n '/Storage/,+2p' thegeekstuff.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)
Sed Pattern Formato 6:/PATTERN/,/PATTERN/
Stampa la sezione del file tra due espressioni regolari (inclusa la riga abbinata).
# sed -n '/P1/,/P2/p' nomefile
Ad esempio, la 5a riga corrisponde a "Storage" e l'8a riga corrisponde a "Design", quindi stampa dalla 5a all'8a.
# sed -n '/Storage/,/Design/p' thegeekstuff.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design