首页 > 解决方案 > Bash:如何替换字符串中的文字 a \r\n?

问题描述

我正在尝试用文字替换\r\n文字\ntr

STR="**Line1**\r\nLine2"
echo $STR
echo $STR | tr '\r\n' '\n'

我希望

**Line1**\r\nLine2
**Line1**\nLine2

但相反我得到

**Line1**\r\nLine2
**Line1**\r\nLine2

我哪里错了?

标签: bashescaping

解决方案


tr从标准输入替换为标准输出。要替换变量 bash 参数扩展,可以改为使用

STR=${STR//\\r\\n/\\n}
echo "$STR"

如果字符串可以包含制表符空格或换行符,则在用作参数时也不要忘记双引号。

否则,如果问题与tr. 反斜杠是转义字符,必须转义,但tr它是字符直译器,不适合替换字符串。


推荐阅读