日期:2014-05-16  浏览次数:20706 次

请问一下文本 如何排序
文件如下
[gol]
  comment = xxx
  path = XXX
[voc]
  comment = xxx
  comment = xxx
[ACE]
  A=XXX
  B=XXX
排序后预期结果为
[ACE]
  A=XXX
  B=XXX
[gol]
  comment = xxx
  path = XXX
[voc]
  comment = xxx
  comment = xxx
想根据[]里面的第一个字母进行排序,没有什么好点子。
希望各位大侠帮忙出出点子。

------解决方案--------------------
可以这样试试

awk '$0~/\[/ {printf "\n"} {printf "%s;", $0} END{print}' yourfile|sort|tr ';' '\n'

就是把文件的每一段先串起来,分号分隔
排序之后,再把分号替换为换行