如何在Bash中反转文本文件?
例如,如果some.txt
包含此内容:
book
pencil
ruler
然后我怎么能得到这个? :
relur
licnep
koob
答案 0 :(得分:25)
尝试使用tac
和rev
命令的组合形式
$ 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 sed
和minised 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'