加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何反转文本块的顺序

发布时间:2020-12-16 01:14:18 所属栏目:安全 来源:网络整理
导读:如何仅使用sed和cat等bash命令恢复某些文本块的顺序?我想要的是像tac,但它不是逐行操作,而是逐块操作.例: 从 /Section 3/RabbitsDogsCats/Section 2/EaglesMice/Section 1/DogsRabbitsLemmings 至 /Section 1/DogsRabbitsLemmings/Section 2/EaglesMice/Se
如何仅使用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以反转顺序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读