【问题标题】:Replace a string only from a specific line , While string occurs in multiple lines via ansible仅从特定行替换字符串,而字符串通过ansible出现在多行中
【发布时间】:2020-05-21 07:38:42
【问题描述】:

目前我的 /etc/default/grub 看起来像这样:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0 idle=poll isolcpus=2-4 intel_idle.max_cstate=1 nosoftlookup nohalt nmi_watchdog=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_CMDLINE_LINUX=$GRUB_CMDLINE_LINUX" net.ifnames=0 biosdevname=0"
GRUB_CMDLINE_LINUX=$GRUB_CMDLINE_LINUX" isolcpus=2-4"

我只需要从第 6 行删除 isolcpus=2-4,但最后一行应该保持原样。到目前为止,我一直无法这样做。我曾经尝试过的将它从两条线中删除。 只需要通过 ansible 来完成。

编辑:预期输出应如下所示:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0 idle=poll  intel_idle.max_cstate=1 nosoftlookup nohalt nmi_watchdog=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_CMDLINE_LINUX=$GRUB_CMDLINE_LINUX" net.ifnames=0 biosdevname=0"
GRUB_CMDLINE_LINUX=$GRUB_CMDLINE_LINUX" isolcpus=2-4"

【问题讨论】:

  • 嗨。您要求从一行中删除某些内容(GRUB_CMDLINE_LINUX 的第二个声明),该内容也应该保持原样(这是您文件的最后一行)。你能澄清一下吗?最简单的方法可能是编辑您的问题并准确显示您的期望。此外,您能否也显示=> What ever I have tried。谢谢。

标签: regex ansible


【解决方案1】:

不确定是否一切都像你说的那样修复了,但你可以使用

sed '6 s/isolcpus=2-4//' /etc/default/grub

如果你喜欢你得到的东西,加 -i :)

【讨论】:

  • 您需要将空格放在 isol 前面以避免它与 fredisol 匹配,这不是本意,恕我直言,行号是不必要的特定
  • 没有必要为匹配的特定用途做花哨的事情
【解决方案2】:

这是使用lineinmodule 实现它的最简单方法。

   - name: line replace
     lineinfile:
       path: /etc/default/grub
       regexp: 'GRUB_CMDLINE_LINUX=\$GRUB_CMDLINE_LINUX" isolcpus=2-4"'
       line: 'GRUB_CMDLINE_LINUX=$GRUB_CMDLINE_LINUX" "'

【讨论】:

  • 当心,$regexp 中的存在意味着特定的东西,应该使用反斜杠或字符类进行转义:=[$]GRUB_CMD。请同时修复你的 yaml 的缩进
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多