我想反转文本文件(或 stdin)中的行顺序,保留每行的内容。
因此,即从以下内容开始:
foo
bar
baz
我想结束
baz
bar
foo
为此有标准的 UNIX 命令行实用程序吗?
# reverse order of lines (emulates "tac")
# bug/feature in HHsed v1.5 causes blank lines to be deleted
sed '1!G;h;$!d' # method 1
sed -n '1!G;h;$p' # method 2
(说明:在非初始行之前添加缓冲区,交换行并保留缓冲区,最后打印出行)
或者从 awk 单行代码中(以更快的速度执行):
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file*
如果你不记得了
perl -e 'print reverse <>'
在具有 GNU 实用程序的系统上,其他答案更简单,但并非全世界都是 GNU / Linux ...