Ricerca nel sito web

Come leggere l'input Awk da STDIN in Linux - Parte 7


Nelle parti precedenti della serie di strumenti Awk, abbiamo esaminato la lettura dell'input principalmente da uno o più file, ma cosa succede se vuoi leggere l'input da STDIN.

In questa parte 7 della serie Awk, esamineremo alcuni esempi in cui è possibile filtrare l'output di altri comandi invece di leggere l'input da un file.

Inizieremo con l'utilità dir che funziona in modo simile al comando ls, nel primo esempio di seguito utilizziamo l'output del comando dir -l come input per Awk per stampare il nome utente, il nome del gruppo del proprietario e i file che possiede /possiede nella directory corrente:

dir -l | awk '{print $3, $4, $9;}'

Dai un'occhiata a un altro esempio in cui utilizziamo le espressioni awk, qui vogliamo stampare i file di proprietà dell'utente root utilizzando un'espressione per filtrare le stringhe come nel comando awk di seguito:

dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

Il comando sopra include l'operatore di confronto (==) per aiutarci a filtrare i file nella directory corrente che sono di proprietà dell'utente root. Ciò si ottiene utilizzando l'espressione $3== ”root ”.

Consideriamo un altro esempio in cui utilizziamo un operatore di confronto awk per trovare la corrispondenza con una determinata stringa.

Qui, abbiamo utilizzato l'utilità cat per visualizzare il contenuto di un file denominato tecmint_deals.txt e vogliamo visualizzare solo le offerte di tipo Tech, quindi eseguiremo il comando seguenti comandi:

cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

Nell'esempio sopra, abbiamo utilizzato l'operatore di confronto valore ~ /pattern/, ma ci sono due comandi per cercare di far emergere qualcosa di molto importante.

Quando esegui il comando con il pattern tech non viene stampato nulla perché non esiste alcun deal di quel tipo, ma con Tech ottieni deal di digita Tecnologia.

Quindi fai sempre attenzione quando usi questo operatore di confronto, fa distinzione tra maiuscole e minuscole, come abbiamo visto sopra.

Puoi sempre usare l'output di un altro comando come input per awk invece di leggere l'input da un file, questo è molto semplice come abbiamo visto negli esempi sopra.

Spero che gli esempi siano stati abbastanza chiari da farti capire, se hai dubbi, puoi esprimerli attraverso la sezione commenti qui sotto e ricordati di controllare la parte successiva della serie in cui esamineremo le funzionalità di awk come variabili, espressioni numeriche e operatori di assegnazione.