ฉันมีสตริงคั่นด้วยเครื่องหมายจุลภาคที่ฉันต้องการค้นหาอินพุตของฉันในบรรทัดนั้น:
echo US | grep "US,CA,CH,JP"
เอาต์พุตว่างเปล่า! ฉันจะใช้ grep เพื่อค้นหาอินพุตของฉันในสตริงนั้นได้อย่างไร
ฉันมีสตริงคั่นด้วยเครื่องหมายจุลภาคที่ฉันต้องการค้นหาอินพุตของฉันในบรรทัดนั้น:
echo US | grep "US,CA,CH,JP"
เอาต์พุตว่างเปล่า! ฉันจะใช้ grep เพื่อค้นหาอินพุตของฉันในสตริงนั้นได้อย่างไร
คำตอบ:
สลับอาร์กิวเมนต์ของคำสั่ง:
echo "US,CA,CH,JP" | grep US
ใน:
echo US | grep "US,CA,CH,JP"
คุณกำลังมองหาสตริง (รูปแบบ) US,CA,CH,JP
ในสตริงอินพุตUS
ซึ่งไม่ตรงกับที่คาดไว้
หากคุณไม่คาดหวังว่าเครื่องหมายจุลภาคจะทำหน้าที่เหมือนคำสั่ง "หรือ" ในกรณีนี้คุณเพียงแค่เปลี่ยนเครื่องหมายจุลภาคเป็นไพพ์และใช้-E
ตัวเลือกสำหรับนิพจน์ทั่วไปแบบขยาย :
echo US | grep -E "US|CA|CH|JP"
หรือเปลี่ยนเครื่องหมายจุลภาคเป็นอักขระขึ้นบรรทัดใหม่:
echo US | grep "US
CA
CH
JP"
ฉันจะใช้ $echo US | grep -i "US|CA|JP|CH"
แทนที่จะเป็น eco ให้รายการหรืออะไรที่มันสามารถไปหารูปแบบได้แทนที่จะมองหามันใน "US"
-E
คุณลืม