当前位置:  开发笔记 > 编程语言 > 正文

如何反转文本文件的行?

如何解决《如何反转文本文件的行?》经验,为你挑选了3个好方法。

我正在编写一个需要反转文本文件行的小shell脚本.是否有标准的过滤器命令来执行此类操作?

我的具体应用是我得到一个Git提交标识符列表,我想以相反的顺序处理它们:

git log --pretty=oneline work...master | grep -v DEBUG: | cut -d' ' -f1 | reverse

我提出的最好的方法就是这样实现reverse:

... | cat -b | sort -rn | cut -f2-

这用于cat对每一行进行编号,然后sort按降序数字顺序(最终反转整个文件)对它们进行排序,然后cut删除不需要的行号.

以上适用于我的应用程序,但在一般情况下可能会失败,因为cat -b只有非空行数.

有没有更好,更通用的方法来做到这一点?



1> Vinko Vrsalo..:

在GNU coreutils中,有tac(1)



2> porg..:

有一个标准命令用于您的目的:

tail -r file.txt

以相反的顺序打印file.txt的行!


[尾巴的POSIX规范](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/tail.html)没有提到`-r`选项
OS X 10.7上的手册页说:"尾部实用程序应该是IEEE Std 1003.2-1992(``POSIX.2'')规范的超集.特别是-F,-b和-r选项是该标准的延伸."

3> Hynek -Pichi..:

答案不是42但是tac.

编辑:使用较慢但耗费更多内存sed

sed 'x;1!H;$!d;x'

甚至更长

perl -e'print reverse<>'


'tac'并不神秘:反过来就是'猫'.;-)
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有