Tôi cho rằng <br>
trong câu hỏi của bạn ở cuối date
cột là điều không mong muốn. Trong mọi trường hợp, nó có thể được gỡ bỏ dễ dàng nếu nó có mặt. Tuy nhiên, đến phần chính bạn có thể đạt được những gì bạn đang cố gắng sử dụng,
sort -k 2n filename.txt
Bây giờ, lệnh trên sẽ cung cấp đầu ra theo cách được sắp xếp. Bây giờ, lệnh dưới đây sẽ cung cấp cho những gì bạn tìm kiếm.
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Giải trình
Lệnh sort về cơ bản sắp xếp tệp dựa trên cột thứ hai là ngày. Vì vậy, tôi đã sửa đổi tệp đầu vào của bạn để kiểm tra lệnh nếu nó hoạt động vì tệp đầu vào có tất cả dữ liệu được sắp xếp theo mặc định. Sau đó, awk
lệnh in tất cả các dòng cho đến khi chúng ta gặp một trận đấu cụ thể.
Kiểm tra
cat filename.txt
647919 2014/01/01
647946 2012/11/30
647955 2011/01/04
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
Bây giờ, sort -k 2n filename.txt
đầu ra là,
647955 2011/01/04
647946 2012/11/30
648266 2013/12/03
648267 2013/12/03
648674 2013/12/04
647919 2014/01/01
Bây giờ chúng tôi hài lòng rằng tập tin được sắp xếp trên cột thứ hai. Bây giờ, để chọn giá trị UPTO một ngày cụ thể,
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Trong ví dụ trên, tôi nhận được tất cả các giá trị tối đa 2013/12/03
. Đầu ra là,
647955 2011/01/04
647946 2012/11/30
Không, <br>
là một phần của tập tin của tôi
Nếu đây là trường hợp, chúng ta có thể điều chỉnh lệnh một chút như dưới đây.
awk '{print $1, substr($2, 1, length($2)-4)}' filename.txt |
sort -k 2n filename.txt | awk '/2013\/12\/03/ {exit} {print}'
Vì vậy, tôi chỉ loại bỏ tất cả các <br>
thẻ từ cột thứ hai và sau đó đường ống lệnh đã đề cập ở trên.
Người giới thiệu
https://unix.stackexchange.com/a/11323/47538
https://unix.stackexchange.com/a/83069/47538