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

前端之家收集整理的这篇文章主要介绍了bash – 如何反转文本块的顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何仅使用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以反转顺序.

原文链接:https://www.f2er.com/bash/384871.html

猜你在找的Bash相关文章