GNU/Linux >> Linux Esercitazione >  >> Linux

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

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.

  1. Leggi un'intera riga da stdin/file.
  2. Rimuove qualsiasi nuova riga finale.
  3. Posiziona la linea, nel suo pattern buffer.
  4. Modifica il pattern buffer secondo i comandi forniti.
  5. 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

Linux
  1. Utilizzo di sed per trovare e sostituire file di testo in Linux

  2. Estrarre il valore tra due modelli di ricerca sulla stessa riga?

  3. Sostituire una riga con un altro contenuto utilizzando Sed e Parallel per un file di grandi dimensioni?

  4. Eliminazione di righe specifiche da un file nella riga di comando di Linux

  5. Come contare le righe in un file in UNIX/Linux

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

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

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

Tutorial Unix Sed:come scrivere su un file usando Sed

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

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