Ok, hơi muộn khi thêm vào đóng góp của tôi, nhưng tôi nghĩ nó đáng giá.
Yêu cầu phải đáp ứng, theo OP là cột đầu tiên có giá trị thập phân bằng .000
hoặc .500
duy nhất. Không có quy định nào về giá trị hàng đầu, theo phạm vi hoặc độ dài. Để mạnh mẽ, không nên giả sử bị ràng buộc bởi bất cứ điều gì ngoại trừ việc không có các ký tự không trống trước cột đầu tiên (hoặc không còn là cột đầu tiên) và nội dung của cột đầu tiên sẽ có dấu thập phân .
, trong đó ở đâu đó
OP đang muốn sử dụng grep
, nó sẽ in toàn bộ dòng khi tìm thấy kết quả khớp, do đó, điều duy nhất cần làm là tạo mẫu phù hợp với tất cả và chỉ những gì được yêu cầu.
Đơn giản, và không có lý do để sử dụng sed
hoặc awk
như `grep có thể xử lý nguồn dưới dạng tệp hoặc đường ống.
Để grep
sử dụng tập tingrep '^[^.]*\.[05]0\{2\}\s' the_file.txt
Để grep
từ một đường ống, sử dụngmy_command | grep '^[^.]*\.[05]0\{2\}\s'
Mẫu là : ^
, bắt đầu ở đầu dòng; [^.]
, phù hợp với bất kỳ ký tự không thập phân; *
, càng nhiều lần càng tốt (bao gồm cả không); \.
, khớp một dấu thập phân; [05]
, khớp với năm hoặc không; 0\{2\}
, khớp 2 số không nữa (dấu gạch chéo ngược trước dấu ngoặc mở và đóng ngăn vỏ cố gắng thực hiện mở rộng dấu ngoặc); \s
, khớp với một ký tự khoảng trắng (có nghĩa là phần cuối của cột - để sử dụng trong trường hợp sử dụng khác, thay thế bằng dấu tách cột, thường là dấu phẩy, dấu chấm phẩy hoặc tab \t
).
Lưu ý rằng điều này sẽ khớp chính xác với những gì OP yêu cầu. Nó sẽ không khớp .5000
hoặc .0000
thậm chí tương đương về số, bởi vì mẫu tìm kiếm năm hoặc một số không, theo sau là chính xác hơn 2 số 0 theo sau là khoảng trắng. Nếu điều đó có ý nghĩa, thì tất cả các câu trả lời khác, cho đến nay, đều thất bại ở chỗ chúng sẽ khớp với bất kỳ số 0 nào, lớn hơn 1, sau chữ số kiểm tra. Và ngoại trừ câu trả lời của FloHimelf, họ sẽ khớp bất cứ thứ gì trong cột thứ hai bắt đầu .000
hoặc .500
, bao gồm .0003
và .500T
, và bởi FloHimelf sẽ khớp với bất cứ thứ gì tương đương về mặt toán học .0
và.5
, cho dù có bao nhiêu số không. Cái cuối cùng, trong khi không khớp với những gì OP đã nêu có khả năng khớp với những gì OP cần.
Cuối cùng, nếu sức mạnh và tốc độ của awk
mong muốn, mặc dù OP đã yêu cầu grep
, thì lệnh sẽ là:
Với một tập tin awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
Với một đường ống my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'