Sed用多行替换字符串

时间:2016-01-07 15:06:41

标签: regex sed editor text-editor

我有简单的sed命令:

#!/bin/bash
COMMAND=$1
sed -e "s#COMMAND#$COMMAND#

命令的值应该是每个命令的新行,但我无法弄清楚如何将它们分配给sed并将每个命令放在新行上。我试过的是:

 ./script 'ls\n date\n uname\n'

问候!

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,您希望将字符串中的换行符表示(即反斜杠字符,后跟' n')替换为实际打印的换行符。

以下脚本采用单引号字符串(问题中显示的输入),其中包含文字' \ n'并将它们转换为实际的新行。

#!/bin/bash
echo -n $1 | sed -e 's#\\n#\n#g'

使用示例:

[user@localhost ~]$ ./simple_sed.sh 'ls\ndate\nuname\n' 
ls
date
uname

您的脚本所需的更改是

    1. 回显参数,否则sed需要一个文件并且什么都不做;
    1. 匹配\\ n并将其替换为换行符;和
    1. 添加' g在更换发生后将继续在一行内搜索(读取:多个\ n在一行中替换)。