在 tr 命令中使用 -c 选项时没有结果

No results when using -c option in tr command

在 linux.
中的 tr 命令中使用 -c 选项时不会发生转换 例如 tr -c "[:digit:]" "#"tr -c [:digit:] "#"。当我输入类似 abc 的文本而不是 ### 时,没有任何反应。
输入:qwe123ty12.
预期输出:###123##12#
当前输出:###123##12##

当您按 Enter 时,这也是一个字符:换行符(有时写为 \n)。

您的字符 class 包括所有非数字字符,包括换行符。这就是为什么每次您按下 Enter 时,都会在输出中添加另一个 #。它不会立即可见,因为输出仅在打印换行符时(您的选项集永远不会发生)或到达输入末尾(即 Ctrl+D 用于交互式输入)。

您可以通过

免除换行符变成#
tr -c '[:digit:]\n' '#'

这会将 \n 添加到要单独保留的字符集中。