Come usare il separatore awk di virgoletta singola?


11

Vorrei usare awk per estrarre informazioni dall'output SQL come il seguente:

(count (distinto serverclass) = '2')

E è necessario estrarre il numero, che è 2 in questo esempio.

Mi piacerebbe fare qualcosa di simile al seguente, ma non riesco a capire come sfuggire alla singola citazione:

<sqlCommand> | awk 'BEGIN{FS="'"}{print $2}'

Come posso ottenere una virgoletta singola letterale come mio separatore di campo in awk?

Risposte:


14

Per inserire un singolo carattere tra virgolette in una stringa a virgoletta singola, termina la stringa corrente, scrivi "'"o \'e ricomincia la stringa.

Nel tuo esempio, quello è

awk 'BEGIN{FS="'"'"'"}{print $2}'

o

awk 'BEGIN{FS="'\''"}{print $2}'

Tuttavia, utilizzando l' -Fopzione per specificare il separatore di campo si otterrà un codice più leggibile:

awk -F\' '{print $2}'

Perché hai aggiornato lo stile da -F"'"a -F\'?
WilliamKF,

1
Nessun buon motivo. Entrambi funzionano, ma il primo ha troppe citazioni per i miei gusti.
Dennis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.