【问题标题】:tr command with special character带有特殊字符的 tr 命令
【发布时间】:2012-03-19 14:54:54
【问题描述】:

我正在尝试将"<br>" 替换为“\n”,但没有找到如何将 与 tr 一起使用。执行此命令的任何想法:

echo "HTML example<br>Print new line<br>please<br>not work" | tr "<br>" "\n" 

编辑

FatalError 答案不适用于我的 OSX Lion。我不知道为什么,但是这个简单的sed 命令不换行,它只返回

HTML examplenPrint new linenpleasennot work

我正在使用 GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin11)。 还有什么想法吗?

【问题讨论】:

    标签: bash


    【解决方案1】:

    tr 用于将字符映射到其他字符。对于这个任务,我建议使用sed:

    echo "HTML example<br>Print new line<br>please<br>not work" | sed -e 's/<br>/\n/g'
    

    这告诉sed 用换行符替换&lt;br&gt; 的每个实例。

    编辑

    如果你有问题,因为sed中的/\,这样就可以解决问题了

    echo "HTML example<br>Print new line<br>please<br>not work" | sed -e "s/<br>/\\`echo -e '\n\r'`/g"
    

    【讨论】:

    • 经常穿鞋;)。
    • 我已经尝试使用 sed,但不适用于带有 GNU bash 的 mac OSX Lion,版本 3.2.48(1)-release (x86_64-apple-darwin11)
    • @Rodrigo sed 不是 bash 的一部分(单独的程序),因此它是 Mac OS 很重要,而不是哪个版本的 bash。也就是说——正确的解决方案是修复你的 sed 命令,而不是使用 tr。
    • @Rodrigo 可能你没有 GNU sed,而是 BSD sed。在这种情况下,-e 可能很重要(GNU 不需要它)。但我有点生疏了。你能展示你看到的结果吗?
    • 它只显示:HTML examplenPrint new linenpleasennot work。但我找到了答案(我编辑了 FatalError 答案,你能看到吗),稍微复杂一点,但可以工作。问题是因为该命令有一个 /\ 字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多