วิธีใช้ตัวคั่น awk ของเครื่องหมายคำพูดเดี่ยว?


11

ฉันต้องการใช้ awk เพื่อดึงข้อมูลจากผลลัพธ์ SQL ดังนี้:

(จำนวน (เซิร์ฟเวอร์เซิร์ฟเวอร์ที่แตกต่าง) = '2')

และจำเป็นต้องแยกตัวเลขซึ่งก็คือ 2 ในตัวอย่างนี้

ฉันต้องการทำบางสิ่งบางอย่างดังต่อไปนี้ แต่ไม่สามารถหาวิธีที่จะหลีกเลี่ยงคำพูดเดียว:

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

ฉันจะขอใบเสนอราคาเดียวตามตัวอักษรเป็นตัวคั่นฟิลด์ใน awk ได้อย่างไร

คำตอบ:


14

หากต้องการแทรกอักขระเครื่องหมายคำพูดเดี่ยวในสตริงที่มีเครื่องหมายคำพูดเดี่ยวให้จบสตริงปัจจุบันเขียน"'"หรือ\'เริ่มต้นสตริงใหม่อีกครั้ง

ในตัวอย่างของคุณนั่นคือ

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

หรือ

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

อย่างไรก็ตามการใช้-Fสวิตช์เพื่อระบุตัวคั่นฟิลด์จะส่งผลให้โค้ดอ่านง่ายขึ้น:

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

ทำไมคุณถึงปรับปรุงสไตล์จาก-F"'"เป็น-F\'?
WilliamKF

1
ไม่มีเหตุผลที่ดี ทั้งสองทำงาน แต่อันแรกมีคำพูดมากเกินไปสำหรับรสนิยมของฉัน
Dennis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.