如何仅使用sed和cat等bash命令恢复某些文本块的顺序?我想要的是像tac,但它不是逐行操作,而是逐块操作.例:
从
/Section 3/ Rabbits Dogs Cats /Section 2/ Eagles Mice /Section 1/ Dogs Rabbits Lemmings
至
/Section 1/ Dogs Rabbits Lemmings /Section 2/ Eagles Mice /Section 3/ Rabbits Dogs Cats
在某些文件中,块的开头用斜杠标记,如上例所示.在其他情况下,块仅通过它们之间存在一个或多个空行来标记.
在emacs中,您可以使用sort-paragraph命令:
按Ctrl-xhMeta-xsort-paragraphsEnter
在vim:https://superuser.com/questions/365094/sort-file-per-paragraph-in-vim
使用基本的unix工具:
awk -F'\n' -vRS='' -vOFS=',' '{$1=$1}1' input.txt | sort | tr ',' '\n' | sed 's@^/@\n/@'
我使用awk将数据转换为csv,然后对csv进行排序,最后我将csv转换回list样式.
结果:
/Section 1/ Dogs Rabbits Lemmings /Section 2/ Eagles Mice /Section 3/ Rabbits Dogs Cats
编辑:对不起,我没有仔细看你的问题.您可以将sort命令更改为tac以反转顺序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。