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?

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}'

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.