我有一个包含数百行的文件,格式如下:
#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]
我想在 awk/sed 中创建一个脚本,使用每组文本第三行中的第二个参数按字母顺序排列此文件。在此文件中,它是“abc”、“hkf”或“xyz”,可以是任何内容 - 它们是在此 apache 重定向文件中创建的重定向。
我想我想做的是:
- 将每组三行连接成一行,每行之间使用分隔符
- 使用 sort -k3,3 对行进行排序
- 然后用分隔空行重新组装 3 行结构
- 写入文件
我的预期输出如下所示:
#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]
这有道理吗?有一个更好的方法吗?
附注我的目的是使脚本可移植,以便它可以用于此结构的多个文件。当建议解决问题的代码时,请尽可能详细地说明,以便像我这样的新手开始理解如何有效地解决这个问题并能够扩展最终结果。
非常感谢任何和所有的帮助。