使用 tac 逐字符反转文件

Wee*_*ezy 5 tac

我想使用tac逐个字符反转文本文件。在 coreutils 的信息页面上,我发现了一个例子:#Reverse a file character by charactertac -r -s 'x\|[^x]'

但是运行tac -r -s似乎打开标准输入而不是打印文件。是什么'x\|[^x]'意思,我应该怎么做?

我还注意到,输出tac [file]tac -r [file]是相同的,他们是一样的cat [file]。仍然无法通过字符反转找出字符。

Mic*_*mer 10

要使用 逐个字符反转文件tac,请使用:

tac -r -s 'x\|[^x]'
Run Code Online (Sandbox Code Playgroud)

这记录在info tac

# Reverse a file character by character.
tac -r -s 'x\|[^x]'
Run Code Online (Sandbox Code Playgroud)

-r导致分隔符被视为正则表达式-s SEP使用SEP作为隔膜x\|[^x]是匹配每个字符的正则表达式(那些是x,那些不是x)。

$ cat testfile
abc
def
ghi
$ tac -r -s 'x\|[^x]' testfile

ihg
fed
cba%
$
Run Code Online (Sandbox Code Playgroud)

tac filecat file除非file只有一行不同。tac -r file是一样的,tac file因为默认的分隔符是\n,当被视为正则表达式时是一样的,而不是。

  • @muru 是的,如果你使用 `.`,它会在 `\n` 上交换字节:`printf 'ab\ncd\n'|tac -r -s 。|hexdump -c` -> `\nd \ncba` 和 `tac -r -s 。| tac -r -s .` 不是幂等的。 (2认同)