是否可以通过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/

10-13 01:28