Tôi có một tập tin prova.txt
như thế này:
Start to grab from here: 1
fix1
fix2
fix3
fix4
random1
random2
random3
random4
extra1
extra2
bla
Start to grab from here: 2
fix1
fix2
fix3
fix4
random1546
random2561
extra2
bla
bla
Start to grab from here: 1
fix1
fix2
fix3
fix4
random1
random22131
và tôi cần phải chuyển từ "Bắt đầu lấy ở đây" đến dòng trống đầu tiên. Đầu ra phải như thế này:
Start to grab from here: 1
fix1
fix2
fix3
fix4
random1
random2
random3
random4
Start to grab from here: 2
fix1
fix2
fix3
fix4
random1546
random2561
Start to grab from here: 1
fix1
fix2
fix3
fix4
random1
random22131
Như bạn có thể thấy các dòng sau "Bắt đầu lấy ở đây" là ngẫu nhiên, vì vậy cờ -A -B grep không hoạt động:
cat prova.txt | grep "Start to grab from here" -A 15 | grep -B 15 "^$" > output.txt
Bạn có thể giúp tôi tìm cách bắt được dòng đầu tiên sẽ được lấy (như "Bắt đầu lấy từ đây"), cho đến khi một dòng trống. Tôi không thể dự đoán mình sẽ có bao nhiêu dòng ngẫu nhiên sau "Bắt đầu lấy từ đây".
Bất kỳ giải pháp tương thích unix nào cũng được đánh giá cao (grep, sed, awk tốt hơn perl hoặc tương tự).
EDITED: sau phản hồi xuất sắc của @ john1024, tôi muốn biết liệu có thể:
Sắp xếp 1 ° khối (theo Bắt đầu để lấy từ đây: 1 rồi 1 rồi 2)
2 ° xóa 4 dòng (ngẫu nhiên theo thứ tự chữ cái) fix1, fix2, fix3, fix4 nhưng luôn là 4
3 ° cuối cùng loại bỏ các bản sao ngẫu nhiên, như lệnh sort -u
Shoul đầu ra cuối cùng là như thế này:
# fix lines removed - match 1 first time
Start to grab from here: 1
random1
random2
random3
random4
#fix lines removed - match 1 second time
Start to grab from here: 1
#random1 removed cause is a dupe
random22131
#fix lines removed - match 2 that comes after 1
Start to grab from here: 2
random1546
random2561
hoặc là
# fix lines removed - match 1 first time and the second too
Start to grab from here: 1
random1
random2
random3
random4
#random1 removed cause is a dupe
random22131
#fix lines removed - match 2 that comes after 1
Start to grab from here: 2
random1546
random2561
Đầu ra thứ hai tốt hơn cái đầu tiên. Một số phép thuật lệnh unix khác là cần thiết.