tr 中的补语选项

tr 中的补语选项

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

回声 "a" | tr-cab

为什么会产生:

AB根@Slack

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

答案1

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

echo在您的示例中产生由两个字符组成的输出:

  • a
  • 换行符 ( \n)

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

  • 它保持了a角色的完整性
  • 将换行符替换为b

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

tr这将产生与相同的输入echo,因此输出也相同:

printf "a\n" | tr -c a b
ab[~]#

与之比较:

printf "a" | tr -c a b
a[~]#

和:

printf "a\n\n" | tr -c a b
abb[~]#

相关内容