是否可以通过echo或其他任何替代命令将以下行添加到multipath.conf中?
## ORA_FRA_IRD01P3 1x100GB
多路径{
第二次世界大战350002ac006450f58
别名ORA_FRA_IRD01P3
}
文件末尾有一个大括号'}'。上面提到的行必须粘贴在multipath.conf文件中的大括号'}'上方。
谢谢,
最佳答案
干得好:
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
例:
[[email protected] stackoverflow]# cat multipath.conf
{
{
line1
line2
line3
line4
}
}
[[email protected] 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
[[email protected] 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
的输出被写到一个临时文件中,因为我们现在还不能覆盖该文件的原始版本。双与号(
&&
)表示如果第一个命令成功执行,则继续执行下一个命令。最后,我们使用
mv -f
命令将临时文件强制重命名为multipath.conf,从而覆盖原始内容。关于linux - 通过echo将行添加到multipath.conf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31878494/