Bash

逐行和逐字元反轉文件

  • July 15, 2020

輸入:

hello
enrico

輸出:

ocirne
olleh

為此,我可以簡單地tac創建一個文件並將輸出通過管道傳輸到rev(或相反),因此完成這項工作的一個函式就是:

revtac() { tac "$@" | rev; }

這項工作是否有內置功能?

我懷疑這可能會破壞某些東西,因為它會反轉<CR><LF>在 Windows 生成的文件上,但我仍然感興趣。

不,這項工作沒有內置功能。

順便說一句,內置外掛tac也不rev是。它們是外部二進製程序,一些 *nix 系統甚至沒有它們。

您還可以使用 Perl 來模擬組合:

perl -lne 'push @lines, scalar reverse; END { print for reverse @lines }' -- file

您可以根據實際需要使用 awk 或 sed 腳本,例如:

sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' /path/YOURFILE | sed '1!G;h;$!d'

我以這種方式對其進行了測試:

$ cat /tmp/a
hello
enrico
$ sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' /tmp/a | sed '1!G;h;$!d'
ocirne
olleh
$ 

引用自:https://unix.stackexchange.com/questions/598611