【问题标题】:Adding lines to multipath.conf through echo通过 echo 向 multipath.conf 添加行
【发布时间】:2015-08-07 21:47:42
【问题描述】:

是否可以通过 echo 或任何其他替代命令在 multipath.conf 中添加以下行?

##ORA_FRA_IRD01P3 1x100GB 多路径{ wwid 350002ac006450f58 别名 ORA_FRA_IRD01P3 }

文件末尾有一个右大括号“}”。上述行必须粘贴在 multipath.conf 文件中的右大括号“}”上方。

谢谢,

【问题讨论】:

  • 这可以通过 sed 命令来实现,而不是通过 echo

标签: linux echo


【解决方案1】:

给你:

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 的输出被写入一个临时文件,因为我们还不能覆盖该文件的原始版本。

双与号 (&&) 表示如果第一个命令成功,则继续执行下一个命令。

最后我们用mv -f命令将临时文件强行重命名为multipath.conf,从而覆盖了原来的内容。

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多