Bagaimana cara menggunakan pemisah awk dari kutipan tunggal?

11

Saya ingin menggunakan awk untuk mengeluarkan informasi dari output SQL seperti berikut:

(hitung (berbeda kelas server) = '2')

Dan perlu mengekstrak angka, yaitu 2 dalam contoh ini.

Saya ingin melakukan sesuatu seperti yang berikut ini, tetapi tidak dapat menemukan cara untuk menghindari kutip tunggal:

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

Bagaimana saya bisa mendapatkan penawaran tunggal literal sebagai pemisah bidang saya dalam awk?

WilliamKF
sumber

Jawaban:

14

Untuk memasukkan karakter kutipan tunggal dalam string yang dikutip tunggal, akhiri string saat ini, tulis "'"atau \'dan mulai string lagi.

Dalam contoh Anda, itu

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

atau

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

Namun, menggunakan -Fsakelar untuk menentukan pemisah bidang akan menghasilkan kode yang lebih mudah dibaca:

awk -F\' '{print $2}'
Dennis
sumber
Mengapa Anda memperbarui gaya dari -F"'"ke -F\'?
WilliamKF
1
Tidak ada alasan bagus. Keduanya bekerja, tetapi yang pertama memiliki terlalu banyak kutipan untuk seleraku.
Dennis