如何在 Linux 命令行中将文本添加到文件中的特定单词前面?

如何在 Linux 命令行中将文本添加到文件中的特定单词前面?

我目前正在编写一个自动更改配置文件的脚本,具体来说,我想将“vfio vfio_iommu_type1 vfio_pci vfio_virqfd”(不带引号)放在 MODULES=() 的括号之间。我还想知道如何稍后从命令行中删除它。MODULES 位于文件 /etc/mkinitcpio.conf 中,位于第 7 行。

答案1

最好给我们提供一个 /etc/mkinitcpio.conf 文件的示例。

您可以使用以下命令更改文件,假设只有一个实例:()

sed -i 's/()/(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/g' /etc/mkinitcpio.conf

要将其改回来,只需执行相反的操作:

sed -i 's/(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/()/g' /etc/mkinitcpio.conf

假设它有多个实例,您可以执行以下操作:

sed -i '7s/MODULES=\(\)/MODULES=(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/ /etc/mkinitcpio.conf

7 是您想要更改的实例所在的行号。

答案2

您可以使用 Linux 上预装的 sed 命令。

sed -i -e 's/MYWORD/HELLO FROM MYWORD/g' myscript.sh

更多示例: 在此处输入链接描述

答案3

替换使用:

sed -i 's/MODULES=\(\)/MODULES=(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/g' /etc/mkinitcpio.conf

并恢复:

sed -i 's/MODULES=\(vfio vfio_iommu_type1 vfio_pci vfio_virqfd\)/MODULES=()/g' /etc/mkinitcpio.conf

相关内容