Hãy giúp tôi sử dụng sed. Tôi có một tệp như dưới đây.Sed để trích xuất văn bản giữa hai chuỗi
START=A
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=B
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=C
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=D
xxxxx
xxxxx
END
Tôi muốn nhận văn bản giữa START = A, END. Tôi đã sử dụng truy vấn dưới đây.
sed '/^START=A/,/^END/!d' input_file
Vấn đề ở đây là, Tôi nhận
START=A
xxxxx
xxxxx
END
START=D
xxxxx
xxxxx
END
thay vì
START=A
xxxxx
xxxxx
END
Sed thấy tham lam.
Hãy giúp tôi giải quyết vấn đề này.
Xin cảm ơn trước.
Tôi có thể sử dụng AWK để đạt được mục tiêu trên không?
Cảm ơn bạn đã trả lời. Tôi cần văn bản giữa START = A và END tiếp theo, phần trên cung cấp dữ liệu giữa START = A và END cuối cùng. Hy vọng bạn có prob của tôi. – ranganath111
Không, không. Cả hai kịch bản 'awk' và' sed' - ít nhất là trên máy tính của tôi với bản sao của tệp dữ liệu bạn đã cung cấp - in 5 khối dữ liệu giữa 'START = A' và' END', và các khối với 'START = B' đến 'END',' START = C' thành 'END' và' START = D' thành 'END' đều bị bỏ qua từ đầu ra. Bạn đang thử nghiệm nền tảng nào? Bạn đang sử dụng phiên bản 'sed' nào? Bạn đang sử dụng phiên bản 'awk' nào? (Tôi lưu ý rằng dữ liệu thử nghiệm của bạn lặp lại nguyên văn các khối giữa 'START = A' và' END'. Sẽ tốt hơn nếu bạn có các dòng khác nhau ở giữa để bạn có thể xem dòng nào đang được in.) –
Khi tôi kiểm tra điều này , bắt đầu và kết thúc toeks được bao gồm trong đầu ra, trong khi tôi đã có ấn tượng OP chỉ muốn dữ liệu GIỮA chúng. –