【问题标题】:Why is tr replacing a character three times?为什么 tr 替换一个字符三次?
【发布时间】:2021-12-20 11:16:51
【问题描述】:

我正在从终端运行命令。我使用 zsh 作为我的外壳。我的目标是在此目录和所有子目录中的所有 txt 文件中用 ' 替换所有 实例。

我有一个包含以下文本的文件:

这是一个测试:'

当我运行以下命令时

for file in *.txt(.); tr \’ \' < $file | sponge $file

文件是这样结束的

这是一个测试:'''

替换有效,但它发生了 3 次。这似乎不是海绵的问题,但在使用 tr 时会发生。

我做错了什么?

【问题讨论】:

  • 我无法重现这一点,但我怀疑您的 tr 版本不支持多字节字符( 在 UTF-8 中用三个字节表示)。这里有更多信息:unix.stackexchange.com/a/228570/432774

标签: zsh tr


【解决方案1】:

我不知道tr,但你可以使用本机

for file in *.txt(.); do
  { > $file } <<< ${"$( < $file )"//’/\'}
done

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2011-07-01
    • 2016-11-05
    • 2011-12-01
    • 2013-12-05
    相关资源
    最近更新 更多