在Bash中反转文本文件

时间:2014-06-10 06:31:34

标签: bash shell

如何在Bash中反转文本文件?

例如,如果some.txt包含此内容:

book
pencil
ruler

然后我怎么能得到这个? :

relur
licnep
koob

2 个答案:

答案 0 :(得分:25)

尝试使用tacrev命令的组合形式

$ tac file | rev
relur
licnep
koob

来自man tac

  

tac - 反向连接和打印文件

来自man rev

  

rev实用程序将指定的文件复制到标准输出,然后反转        每行中字符的顺序。如果没有指定文件,stan-        读取dard输入。

答案 1 :(得分:0)

Mac OS X使用FreeBSD sed,允许在其替换字符串中使用转义换行符。

F. Hauri提供的以下解决方案适用于GNU sed 4.2.1,FreeBSD sedminised 1.15

escnl='\
'

sed -ne '
    /../!b;
    s/^.*$/'"${escnl}"'&'"${escnl}"'/;
    tx;
  :x;
    s/\(\n.\)\(.*\)\(.\n\)/\3\2\1/;
    tx;
    s/\n//g;
  :;
    1!G;
    $p;
    h
' <<<$'book\npencil\nruler'