ตกลงเพิ่มอีกเล็กน้อยในการบริจาคของฉัน แต่ฉันคิดว่ามันคุ้มค่า
ความต้องการที่จะตอบสนองต่อ OP เป็นคอลัมน์แรกที่มีค่าทศนิยมเป็น.000หรือ.500เท่านั้น ไม่มีข้อกำหนดสำหรับค่านำไม่ว่าจะเป็นตามช่วงหรือความยาว เพื่อความแข็งแรงมันไม่ควรจะสันนิษฐานว่าจะถูก จำกัด โดยอะไรยกเว้นว่าไม่มีอักขระที่ไม่ใช่ว่างก่อนคอลัมน์แรก (หรือก็ไม่คอลัมน์แรก) และว่าเนื้อหาของคอลัมน์แรกจะมีจุดทศนิยมที่., ในนั้นที่ไหนสักแห่ง
OP ต้องการใช้grepซึ่งจะพิมพ์ทั้งบรรทัดเมื่อพบคู่ที่ตรงกันดังนั้นสิ่งเดียวที่ต้องทำคือสร้างรูปแบบที่ตรงกับทั้งหมดและเฉพาะสิ่งที่ต้องการ
ความเรียบง่ายของตัวเองและไม่มีเหตุผลที่จะใช้sedหรือawkgrep สามารถจัดการแหล่งที่มาเป็นไฟล์หรือไพพ์
เพื่อgrepใช้ไฟล์grep '^[^.]*\.[05]0\{2\}\s' the_file.txt
ไปยังgrepจากไปป์ใช้my_command | grep '^[^.]*\.[05]0\{2\}\s'
รูปแบบคือ: ^เริ่มต้นที่จุดเริ่มต้นของบรรทัด; [^.]ตรงกับอักขระที่ไม่ใช่ทศนิยมใด ๆ *หลาย ๆ ครั้งที่เป็นไปได้ (รวมถึงไม่มี) \.ตรงกับจุดทศนิยม [05], จับคู่ทั้งห้าหรือศูนย์; 0\{2\}, จับคู่อีก 2 ศูนย์ (แบ็กสแลชก่อนวงเล็บปีกกาเปิดและปิดป้องกันเชลล์จากการพยายามที่จะขยายรั้ง); \s, จับคู่อักขระช่องว่าง (หมายถึงจุดสิ้นสุดของคอลัมน์ - เพื่อใช้ในกรณีการใช้งานที่แตกต่างกัน, แทนที่ด้วยตัวคั่นคอลัมน์, โดยทั่วไปคือคอมมา, เซมิโคลอน, เซมิโคลอนหรือแท็บ\t)
หมายเหตุว่านี้จะตรงกับว่าสิ่งที่ OP ถาม จะไม่ตรงกัน.5000หรือ.0000แม้ว่าจะเทียบเท่าตัวเลขเพราะรูปแบบค้นหาห้าหรือศูนย์ตามด้วยศูนย์อีก2ตามด้วยช่องว่าง หากนั่นเป็นสิ่งสำคัญคำตอบอื่น ๆ ทั้งหมดก็คือความล้มเหลวในการที่พวกเขาจะตรงกับจำนวนศูนย์ใด ๆ มากกว่า 1 หลังจากตัวเลขทดสอบ และยกเว้นคำตอบของ FloHim เองพวกเขาจะจับคู่ทุกอย่างในคอลัมน์ที่สองที่เริ่มต้น .000หรือ.500รวมถึง.0003และ.500Tและหนึ่งโดย FloHimself จะจับคู่สิ่งที่เทียบเท่ากับคณิตศาสตร์.0และ.5ไม่ว่าจะมีศูนย์อยู่กี่แห่ง อันสุดท้ายในขณะที่ไม่จับคู่สิ่งที่ OP ระบุไว้น่าจะตรงกับสิ่งที่ OP ต้องการอยู่แล้ว
ในที่สุดถ้าต้องการพลังและความเร็วของawkถึงแม้ว่า OP ขอgrepแล้วคำสั่งจะเป็น:
ด้วยไฟล์ awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
ด้วยท่อ my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'