Bash:如何替换字符串中的文字a\r\n?

Bash:如何替换字符串中的文字a\r\n?,bash,escaping,Bash,Escaping,我正在尝试使用tr将文字\r\n替换为文字\n STR="**Line1**\r\nLine2" echo $STR echo $STR | tr '\r\n' '\n' 我希望 **Line1**\r\nLine2 **Line1**\nLine2 但是我得到了 **Line1**\r\nLine2 **Line1**\r\nLine2 我哪里出了问题?tr将stdin替换为stdout。要替换变量bash,可以使用参数展开 STR=${STR//\\r\\n/\\n} echo "$S

我正在尝试使用
tr
将文字
\r\n
替换为文字
\n

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

**Line1**\r\nLine2
**Line1**\nLine2
但是我得到了

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

我哪里出了问题?

tr
将stdin替换为stdout。要替换变量bash,可以使用参数展开

STR=${STR//\\r\\n/\\n}
echo "$STR"
若字符串可以包含制表符空间或换行符,当用作参数时也不要忘记双引号


否则,如果问题在于
tr
。反斜杠是一个转义字符,必须转义,但
tr
是一个字符音译器,不适合替换字符串

\r\n
是一个由四个字符组成的字符串。您需要一个可以替换字符串的工具,例如
sed
tr
,而不是执行逐字符的音译