我有一个yaml文件,它有以下文字:
/data/app0:
server: x.y.z.p
share: /data/app0
mount: /data/app/0
我希望得到以下输出:
/data/app0:
server: x.y.z.p
share: /data/app0
mount: /data/app/0
options: _netdev,noatime,nodiratime
我尝试了以下这是一个简单的正则表达式使用-i和a但是它抛出了一个错误:
[user@jump nodes]$ cat test.yaml
/data/app0:
server: x.y.z.p
share: /data/app0
mount: /data/apps/0
/data/app1:
server: x.y.z.p
share: /data/app1
mount: /data/apps/1
/data/app2:
server: x.y.z.p
share: /data/app2
mount: /data/apps/2
/data/app3:
server: x.y.z.p
share: /data/app3
mount: /data/apps/3
[user@jump nodes]$ sed -i '/mount: /data/app/*/a \
options: _netdev,noatime,nodiratime \' test.yaml
sed: -e expression #1, char 11: extra characters after command
[user@jump nodes]$
不知道为什么会出错?
答案 0 :(得分:0)
Sed使用/作为分隔符,因此它认为您的搜索模式为/mount :/
。所以你的命令是d
(删除),额外的字符(字符11)是a
中的第一个data
。使用反斜杠转义路径斜杠。而且我认为你不应该逃避最后的单引号:
[user@jump nodes]$ sed -i '/mount: \/data\/app\/*/a \
options: _netdev,noatime,nodiratime' test.yaml