【发布时间】:2010-09-29 22:00:36
【问题描述】:
我正在编写一个需要反转文本文件行的小型 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 仅对非空行进行编号。
有没有更好、更通用的方法来做到这一点?
【问题讨论】:
-
不特定于反转文本文件的行,但专门针对您的情况,您可以按时间顺序打印提交:
git log --reverse
标签: shell command-line filter reverse