คำอธิบายของคุณไม่ชัดเจนว่านิพจน์ของคุณไม่ตรงกับสิ่งที่คุณต้องการหรือตรงกับสิ่งที่คุณไม่ต้องการ
ถ้าเป็นอย่างหลังก็อาจเป็นเพราะ .
ในนิพจน์ทั่วไปของ grep จะจับคู่อักขระเดี่ยวใดๆ (ยกเว้นอักขระขึ้นบรรทัดใหม่ - อย่างไรก็ตาม ปกติแล้ว grep จะอิงตามบรรทัดอยู่แล้ว) เพื่อให้ตรงกับจุดตามตัวอักษร (จุด) คุณต้องหลีกหนีจากจุดนั้น \.
หรือวางไว้ในชุดอักขระตามที่คุณได้ทำไว้สำหรับช่วงหลักทศนิยม:
grep "[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
คุณยังพูดถึงว่านิพจน์ควรตรงกับข้อมูล "ลงท้ายด้วย" - ยังไม่ชัดเจนว่าคุณหมายถึง a สิ้นสุดบรรทัด หรือ ก ขอบเขตของคำ - เหล่านี้ตามลำดับ $
และ \b
(หรือ \>
) อดีต.
grep "[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"
grep "[.][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\b"
คุณยังสามารถทำให้นิพจน์สั้นลงโดยใช้ตัวระบุ - เปลี่ยนเป็นโหมดนิพจน์ทั่วไปแบบขยาย (ERE)1:
grep -E "[.][0-9]{7}$"
1 ใน GNU grep คุณสามารถใช้ quantifiers ในโหมด Basic Regular Expression (BRE) ได้โดยการหลีกเครื่องหมายปีกกา grep "[.][0-9]\{7\}$"