Tôi có tệp đầu vào trông như thế này (cột đầu tiên là số vị trí và số thứ hai là số cần tăng theo thời gian) :giải pháp awk để so sánh dòng hiện tại với dòng tiếp theo và in một trong các dòng dựa trên điều kiện
1 0
1 2
1 6
1 7
1 7
1 8
1 7
1 7
1 9
1 9
1 10
1 10
1 9
1 10
1 10
1 10
1 10
1 10
1 10
1 9
1 10
1 10
1 10
1 10
1 10
1 10
và tôi muốn sửa chữa nó trông như thế này (đếm thay thế mà giảm với số lượng trước):
1 0
1 2
1 6
1 7
1 7
1 8
1 8
1 8
1 9
1 9
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
1 10
tôi đã cố gắng sử dụng awk cho điều này, nhưng tôi stumbling với getline kể từ khi tôi không thể có vẻ để tìm ra cách để thiết lập lại số dòng (NR?) vì vậy nó sẽ r ead mỗi dòng và đó là dòng tiếp theo, không phải hai dòng tại một thời điểm. Đây là mã tôi có cho đến nay, bất kỳ ý tưởng?
awk '{a=$1; b=$2; getline; c=$1; d=$2; if (a==c && b<=d) print a"\t"b; else print c"\t"d}' original.txt > fixed.txt
Ngoài ra, đây là sản phẩm Tôi hiện đang nhận được:
1 0
1 6
1 7
1 7
1 9
1 10
1 9
1 10
1 10
1 9
1 10
1 10
1 10
Ok, chỉ cần làm rõ, bạn đang cố gắng * bỏ qua * các dòng mà số lượng giảm? Đó là rất nhiều dòng, tôi tự hỏi nếu bạn có thể đưa ra một ví dụ ngắn hơn mà sẽ được chỉ là rõ ràng? – Levon
Xin lỗi nếu lời giải thích của tôi không rõ ràng, tôi muốn in dòng trước khi số đếm giảm, vì vậy kết thúc với cùng số dòng nhưng với một tệp mà số đếm đặt hoặc tăng, nhưng không bao giờ giảm. – suegene
Tôi hiểu rồi .. hãy xem các câu trả lời được cung cấp bên dưới, tôi nghĩ bạn sẽ tìm thấy những gì bạn đang tìm kiếm. – Levon