Tôi có một tập tin với vài trăm dòng định dạng như vậy:dòng Sorting trong một tập tin theo thứ tự abc sử dụng awk và/hoặc sed
#blah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/xyz(|/)$ http://www.blah.com/404.html [R=301,L,NC]
#xblah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/hkf(|/)$ http://www.blah.com/404.html [R=301,L,NC]
#ablah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/abc/.*(|/)$ http://www.blah.com/404.html [R=301,L,NC]
Tôi muốn tạo ra một kịch bản trong awk/sed để alphabetize tập tin này bằng đối số thứ hai trong dòng thứ ba của mỗi nhóm văn bản. Trong trường hợp của tệp này, đó là "abc", "hkf" hoặc "xyz" có thể là bất kỳ điều gì - chúng là các chuyển hướng được tạo trong tệp chuyển hướng apache này.
I figured rằng những gì tôi muốn làm là:
- concatenate từng nhóm ba dòng vào một dòng với một dấu phân cách giữa mỗi dòng
- loại các dòng sử dụng loại -k3,3
- sau đó tái lắp ráp các dòng 3 xây dựng với một dòng trống tách
- ghi vào tập tin
sản lượng dự kiến của tôi sẽ trông giống như sau:
#ablah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/abc/.*(|/)$ http://www.blah.com/404.html [R=301,L,NC]
#xblah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/hkf(|/)$ http://www.blah.com/404.html [R=301,L,NC]
#blah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/xyz(|/)$ http://www.blah.com/404.html [R=301,L,NC]
Điều này có hợp lý không? Có cách nào tốt hơn để làm điều này?
p.s. ý định của tôi là làm cho tập lệnh di động để nó có thể được sử dụng trên một số tệp của cấu trúc này. Khi đề xuất mã để giải quyết vấn đề, hãy đánh vần nó ra tốt nhất có thể cho một thứ hạng newb như tôi để bắt đầu hiểu cách giải quyết vấn đề này một cách hiệu quả và có thể mở rộng kết quả cuối cùng.
Bất kỳ và tất cả trợ giúp được đánh giá cao.
gì được mong đợi tập tin đầu ra từ trên đầu vào? – anubhava
anubhava, tôi đã chỉnh sửa OP của mình, tôi nghĩ giờ đây có ý nghĩa hơn. – user3043123
sed không phù hợp để phân loại nên awk sẽ là công cụ của bạn – NeronLeVelu