หากสองบรรทัดในไฟล์มีเครื่องหมายคำพูดคู่จำนวนคี่ผลรวมของเครื่องหมายคำพูดคู่จะเป็นเลขคู่และคุณจะไม่พบเครื่องหมายคำพูดที่ไม่สมดุล (นี่คือสิ่งที่ฉันเข้าใจว่าคุณต้องการจะทำจริง แต่ฉันอาจผิด )
awk
สคริปต์นี้รายงานบรรทัดใด ๆ ในบรรทัดอินพุตที่มีราคาเป็นจำนวนคี่:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
เราตั้งคั่นฟิลด์ ( FS
) ไป"
ด้วย-F'"'
ซึ่งหมายความว่าถ้าบรรทัดมีจำนวนคู่ของสนามก็มีคำพูดแปลก ๆ NF
คือจำนวนเขตข้อมูลในระเบียนล่าสุดและNR
เป็นหมายเลขลำดับของระเบียนปัจจุบัน ("หมายเลขบรรทัด")
รับอินพุตต่อไปนี้:
$ cat file
cluster-env,"manage_dirs_on_root","true"
cluster-env,"one_dir_per_partition","false"
cluster-env,override_uid","true"
cluster-env,recovery_enabled","false"
เราได้รับ
$ awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }' file
Line 3 has odd quoting: cluster-env,override_uid","true"
Line 4 has odd quoting: cluster-env,recovery_enabled","false"
สิ่งที่ต้องการ
$ grep -o '"' | wc -l
จะส่งคืน "14" สำหรับไฟล์นี้