【发布时间】:2018-08-28 19:29:36
【问题描述】:
似乎无法在网上找到此问题的答案...
我有一个字符串变量(外部来源),其中新行 "\n" 编码为字符串。
我想用实际的换行符替换这些字符串。下面的代码可以实现这个...
echo $EXT_DESCR | sed 's/\\n/\n/g'
但是当我尝试将结果存储到它自己的变量中时,它会将它们转换回字符串
NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
如何做到这一点,或者我做错了什么?
这是我一直在测试以获得正确结果的代码
EXT_DESCR="This is a text\nWith a new line"
echo $EXT_DESCR | sed 's/\\n/\n/g'
NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
echo ""
echo "$NEW_DESCR"
【问题讨论】:
-
你如何检查
NEW_DESCR? -
这对我有用:
test=$(echo "testing\nthis" | sed 's/\\n/\n/g') && echo "$test"考虑从反引号切换到$()以将输出捕获到变量。 -
@JNevill 的评论指出了问题所在。另请参阅@Gunstick 对Backticks vs braces in Bash 的回答。总之:反引号内的表达式(但不是
$())在执行之前会删除一定程度的引号。 -
这是一个关于“如何将 JSON 字符串转换为纯文本?”的 XY 问题