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?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.