【问题标题】:Why does tr command allow unexpected characters?为什么 tr 命令允许出现意外字符?
【发布时间】:2020-05-04 10:19:52
【问题描述】:

我在 OMVS 环境中运行。

在以下命令中,我没想到会看到包含任何非字母数字字符的输出。

echo $(head /dev/urandom | tr -cd '[:alnum:]' | head -c 32)

但是,我在输出中看到的一个示例是:

J0SPNN-b0PZwbwHzeMAqIE0ufKJdnNJb

我已经意识到显示的破折号('-')只是一个图形表示,但实际上不同的十六进制值都显示为这样。到目前为止,我已经看到了 x'30' 和 x'3E' 之间的值,但预计 tr -cd '[:alnum:]' 只会传递 a-zA-Z0-9,那么这些其他值从何而来?

【问题讨论】:

    标签: unix tr


    【解决方案1】:

    如果我在我的 Mac 上运行你的命令,我会得到“tr:非法字节序列”,我可以让它工作的方式是:

    head /dev/urandom | LC_CTYPE=C tr -cd '[:alnum:]' | head -c 32
    

    (您不需要周围的echo 语句。)

    也就是说,告诉它使用输入作为“C-string”而不是将其解释为 UTF8。

    我没有备用大型机来测试,但我怀疑答案是相同的。

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多