我正在寻找一种方法将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将变量作为一行使用,并用新行代替换行。