是否可以通过echo或任何其他可选命令向multipath.conf添加以下行?
##ORA_FRA_IRD01P3 1x100GB多路径{wwid350002ac006450f58别名ORA_FRA_IRD01P3 }
文件末尾有一个封闭的大括号'}‘。上面提到的行必须粘贴在multipath.conf文件中关闭的大括号'}‘的上方。
谢谢,
发布于 2015-08-07 13:39:02
给你:
tac multipath.conf | sed 's/}/}\n##ORA_FRA_IRD01P3 1x100GB multipath { wwid 350002ac006450f58 alias ORA_FRA_IRD01P3 }/ ; ta ; b ; :a ; N ; ba' | tac > multipath.conf.tmp && mv -f multipath.conf.tmp multipath.conf示例:
[root@joeyoung.io stackoverflow]# cat multipath.conf
{
{
line1
line2
line3
line4
}
}
[root@joeyoung.io stackoverflow]# tac multipath.conf | sed 's/}/}\n##ORA_FRA_IRD01P3 1x100GB multipath { wwid 350002ac006450f58 alias ORA_FRA_IRD01P3 }/ ; ta ; b ; :a ; N ; ba' | tac > multipath.conf.tmp && mv -f multipath.conf.tmp multipath.conf
[root@joeyoung.io stackoverflow]# cat multipath.conf
{
{
line1
line2
line3
line4
}
##ORA_FRA_IRD01P3 1x100GB multipath { wwid 350002ac006450f58 alias ORA_FRA_IRD01P3 }
}解释
tac从文件的最后一行开始,逐行打印文件。
sed 's/}/}\n##ORA_FRA_IRD01P3 1x100GB multipath { wwid 350002ac006450f58 alias ORA_FRA_IRD01P3 }/接受}的第一个实例(这发生在文件中}的最后一个实例,因为tac首先打印最后一行)并将其替换为另一个},后面是换行符,后面是要插入到文件中的文本行。
This stackoverflow answer解释了; ta ; b ; :a ; N ; ba'。
sed调用的输出通过管道通过tac进行回输,以将其按原来的顺序放回。
最后一个调用的tac的输出被写入一个临时文件,因为我们还不能覆盖该文件的原始版本。
双符号(&&)意味着如果第一个命令成功,则继续下一个命令。
最后,我们使用multipath.conf命令强制将临时文件重命名为mv -f,从而覆盖原始内容。
https://stackoverflow.com/questions/31878494
复制相似问题