You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tr命令替换为"\ "仅得到"\"符号,如何实现预期输出?

问题与解决方法

问题详情

执行以下命令:

echo 'Hello;World' | tr ';' '\\ '

实际得到输出:

Hello\World

但预期输出是:

Hello\ World

单独用tr替换分号为空格、或替换分号为反斜杠都正常,但同时替换成反斜加拉空格就失效了。

原因分析

tr是单字符替换工具,它的逻辑是把第一个字符集里的每个字符,对应替换成第二个字符集里同位置的字符。当第一个字符集只有1个字符(这里是;),第二个字符集有多个字符时,tr只会用第二个字符集的第一个字符来做替换,所以最终只会把;换成反斜杠,空格被忽略了。

可行解法

因为tr做不了多字符替换,换用支持多字符替换的工具即可:

方法1:用sed

echo 'Hello;World' | sed 's/;/\\ /g'

执行后就能得到预期的Hello\ World。

方法2:用awk

echo 'Hello;World' | awk '{gsub(/;/, "\\ ")}1'

gsub会全局替换所有;为\ ,最后的1用来输出处理后的内容,同样能达到效果。


内容的提问来源于stack exchange,提问作者Drazer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 17:42:08