如何仅使用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命令:
原文链接:https://www.f2er.com/bash/384871.html按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以反转顺序.