tr 中的补充选项

Mul*_*gan 5 linux bash shell

我无法理解与替换模式一起使用的命令中的complement(-c) 选项tr(即没有任何其他选项),例如:

回声 "a" | 驾驶室

为什么会产生:

AB根@斯莱克

ab没有换行符的字符串)?

tec*_*raf 6

tr 命令处理所有字符,包括非打印字符。

echo 在你的例子中产生一个由两个字符组成的输出:

  • a
  • 换行符 ( \n)

在您的通话中,您下令tr用 替换所有补充a(简单来说:除了a)的字符b,因此:

  • 它使a角色完好无损
  • b.替换换行符。

考虑测试它printf(它不会像这样隐式地在末尾添加换行符echo

这为tras产生相同的输入echo,因此输出也相同:

printf "a\n" | tr -c a b
ab[~]#
Run Code Online (Sandbox Code Playgroud)

与之比较:

printf "a" | tr -c a b
a[~]#
Run Code Online (Sandbox Code Playgroud)

和:

printf "a\n\n" | tr -c a b
abb[~]#
Run Code Online (Sandbox Code Playgroud)