ไม่พบอินพุตของฉันในสตริงโดยใช้ grep


11

ฉันมีสตริงคั่นด้วยเครื่องหมายจุลภาคที่ฉันต้องการค้นหาอินพุตของฉันในบรรทัดนั้น:

echo US | grep "US,CA,CH,JP"

เอาต์พุตว่างเปล่า! ฉันจะใช้ grep เพื่อค้นหาอินพุตของฉันในสตริงนั้นได้อย่างไร

คำตอบ:


18

สลับอาร์กิวเมนต์ของคำสั่ง:

echo "US,CA,CH,JP" | grep US

ใน:

echo US | grep "US,CA,CH,JP"

คุณกำลังมองหาสตริง (รูปแบบ) US,CA,CH,JPในสตริงอินพุตUSซึ่งไม่ตรงกับที่คาดไว้


14

หากคุณไม่คาดหวังว่าเครื่องหมายจุลภาคจะทำหน้าที่เหมือนคำสั่ง "หรือ" ในกรณีนี้คุณเพียงแค่เปลี่ยนเครื่องหมายจุลภาคเป็นไพพ์และใช้-Eตัวเลือกสำหรับนิพจน์ทั่วไปแบบขยาย :

echo US | grep -E "US|CA|CH|JP"

หรือเปลี่ยนเครื่องหมายจุลภาคเป็นอักขระขึ้นบรรทัดใหม่:

echo US | grep "US
CA
CH
JP"

-1

ฉันจะใช้ $echo US | grep -i "US|CA|JP|CH"

แทนที่จะเป็น eco ให้รายการหรืออะไรที่มันสามารถไปหารูปแบบได้แทนที่จะมองหามันใน "US"


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