Jak korzystać z separatora awk pojedynczego cytatu?

11

Chciałbym użyć awk do wyciągnięcia informacji z danych wyjściowych SQL, takich jak:

(liczba (odrębna klasa serwera) = „2”)

I trzeba wyodrębnić liczbę, która w tym przykładzie wynosi 2.

Chciałbym zrobić coś takiego, ale nie mogę wymyślić, jak uniknąć pojedynczego cytatu:

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

Jak mogę uzyskać dosłowny pojedynczy cytat jako mój separator pól w awk?

WilliamKF
źródło

Odpowiedzi:

14

Aby wstawić znak pojedynczego cudzysłowu w ciągu pojedynczego cudzysłowu, zakończ bieżący ciąg, napisz "'"lub \'zacznij ciąg ponownie.

W twoim przykładzie to jest

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

lub

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

Jednak użycie -Fprzełącznika do określenia separatora pól spowoduje, że kod będzie bardziej czytelny:

awk -F\' '{print $2}'
Dennis
źródło
Dlaczego zaktualizowałeś styl od -F"'"do -F\'?
WilliamKF,
1
Bez dobrego powodu. Oba działają, ale pierwszy zawiera zbyt wiele cytatów na mój gust.
Dennis,