我无法理解与替换模式一起使用的命令complement
中的 (-c) 选项tr
(即没有任何其他选项),例如:
回声 "a" | tr-cab
为什么会产生:
AB根@Slack
(ab
没有换行符的字符串)?
答案1
tr
命令处理所有字符,包括非打印字符。
echo
在您的示例中产生由两个字符组成的输出:
a
- 换行符 (
\n
)
在您的通话中,您命令tr
用 替换所有补充字符a
(简单来说: 除外a
)b
,因此:
- 它保持了
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[~]#