将bash中变量中的多行字符串转换为换行转义的单行字符串



我正在寻找一种方法将bash中变量中的多行字符串转换为单行字符串,其中每个n字符转义为n文字。

例如:

str="
Hello
World
"

我需要这个变成HellonWorld。我浏览了关于SO和Unix StackExchange的问题,但我还没有找到一个命令来实现我所需要的。

Bash有两种内置方法来引用适合重新摄取的值。它们不仅可以处理换行符,还可以处理制表符、引号和反斜杠:

❯ echo "${str@Q}"
$'nHellonWorldn'
❯ printf '%qn' "$str"
$'nHellonWorldn'

或者,如果你只是想替换换行符,你可以使用${var//search/replace}语法来做替换:

❯ echo "${str//$'n'/\n}"
nHellonWorldn

尝试:

sed -zn 's/n/\n/p' <<< "$str"

使用-z将变量作为一行使用,并用新行代替换行。

相关内容

  • 没有找到相关文章