【问题标题】:how to prevent dc from breaking the output如何防止直流破坏输出
【发布时间】:2016-02-06 22:25:55
【问题描述】:

我正在使用“dc”命令将十六进制转换为十进制

dc -e "16i$1p"

问题在于它会破坏大量的输出

795717178255658627448611597034913344160729841275756347904742363029055\
1952200534008528895

如何防止这种行为?是否有要传递的选项或参数来禁用此功能?

【问题讨论】:

  • 添加| tr -d '\\\\\n'

标签: bash dc


【解决方案1】:

bc 似乎也在做同样的事情。本规范中也列出了 70 个字符的限制:

http://pubs.opengroup.org/onlinepubs/000095399/utilities/bc.html

在我的脑海中,只是后期处理:

echo "ibase=16; FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | bc | perl -pe's/\\\n//'

此处建议其他选项:https://unix.stackexchange.com/questions/13676/how-can-you-combine-all-lines-that-end-with-a-backslash-character

【讨论】:

    【解决方案2】:

    这个问题既老又冷,但我认为在 GNU dcbc 的较新版本上,可以通过环境变量禁用此功能

    n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    n+=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    
    DC_LINE_LENGTH=0 dc -e "16i${n}p"
    
    BC_LINE_LENGTH=0 bc <<<"ibase=16; $n"
    

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 1970-01-01
      • 2011-05-20
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多