ฉันต้องการทำ grep สำหรับคำหลักที่มีเครื่องหมายคำพูดคู่อยู่ข้างใน ยกตัวอย่างง่ายๆดังนี้
echo "member":"time" | grep -e "member\""
ที่ไม่ตรงกัน จะแก้ไขได้อย่างไร?
ฉันต้องการทำ grep สำหรับคำหลักที่มีเครื่องหมายคำพูดคู่อยู่ข้างใน ยกตัวอย่างง่ายๆดังนี้
echo "member":"time" | grep -e "member\""
ที่ไม่ตรงกัน จะแก้ไขได้อย่างไร?
คำตอบ:
ปัญหาคือคุณไม่สามารถหลีกเลี่ยงสตริงอินพุตได้อย่างถูกต้องให้ลอง:
echo "\"member\":\"time\"" | grep -e "member\""
หรือคุณสามารถใช้เครื่องหมายคำพูดคู่ที่ไม่ใช้ Escape ภายในเครื่องหมายคำพูดเดียว:
echo '"member":"time"' | grep -e 'member"'
เป็นเรื่องของความชอบที่คุณจะพบได้ชัดเจนแม้ว่าแนวทางที่สองจะป้องกันไม่ให้คุณซ้อนคำสั่งของคุณไว้ในเครื่องหมายคำพูดเดี่ยวชุดอื่น (เช่นssh 'cmd'
)
echo '"member":"time"' |grep -e 'member"'
จะต้องมี ทั้งสองวิธีนั้นใช้ได้ แต่ฉันชอบการหลบหนีอย่างชัดเจนเนื่องจากเจตนานั้นชัดเจนกว่า
echo '"member":"time"' |grep -e "member"
ไม่ได้ทดสอบ