Kyl*_*ith 2 linux bash sed echo variable
我有这个:
echo $MSG | sed -e $'s/;/\\\n/g'
Run Code Online (Sandbox Code Playgroud)
我想将该 sed 的结果放在一个名为 $MSG2 的新变量中
就像是:
$MSG2=echo $MSG|sed -e $'s/;/\\\n/g'
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢!
对于您的任务,您不需要管道或 sed。使用bash像这样的内置命令可以更有效地完成所有操作:
NewMsg=${MSG//;/$'\n'}
Run Code Online (Sandbox Code Playgroud)
${MSG//;/$'\n'}是模式替换的一个例子。它用;换行符替换每次出现的。结果保存在 shell 变量中NewMsg。
举个例子:
$ Msg='1;2;3'
$ NewMsg=${Msg//;/$'\n'}
$ echo "$NewMsg"
1
2
3
Run Code Online (Sandbox Code Playgroud)
笔记:
最佳做法是使用小写或混合大小写的 shell 变量。系统对其变量使用所有大写字母,您不希望意外覆盖其中之一。
除非您明确想要分词和路径名扩展,否则始终将您的 shell 变量放在双引号中。因此,当想要使用 时echo $MSG,请改用echo "$MSG"。
此外,除非您知道要回显的字符串中将包含哪些字符,否则会echo出现问题并且使用printf '%s\n' "$MSG". 有关更多详细信息,请参阅 Stéphane Chazelas对echovsprintf的非常有用的讨论。
请注意,如果您确实使用命令替换, $(...),shell 将删除所有尾随换行符。虽然这通常很有帮助,但有时更改是不需要的。
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |