sed + 在特定行末尾但特定字符之前附加语法

问题描述 投票:0回答:1

我想在以

scsi_mod.scan=sync
开头的行的末尾添加语法
GRUB_CMDLINE_LINUX
,并将语法附加到行的末尾但在字符
"

之前

注意 - 如果

scsi_mod.scan=sync
已经存在,则
sed
不应附加额外的
scsi_mod.scan=sync

我们做了以下事情

sed -i '/GRUB_CMDLINE_LINUX/s/$/ scsi_mod.scan=sync/' /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 rd.lvm.lv=VG/LV_root rd.lvm.lv=VG/lv_swap ipv6.disable=1 rhgb quiet scsi_mod.scan=sync" scsi_mod.scan=sync
GRUB_DISABLE_RECOVERY="true"

但是我们没有成功地在之前添加语法

"

预期的结果应该是这样的

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 rd.lvm.lv=VG/LV_root rd.lvm.lv=VG/lv_swap ipv6.disable=1 rhgb quiet scsi_mod.scan=sync" 
GRUB_DISABLE_RECOVERY="true"
linux bash awk sed rhel
1个回答
0
投票

使用 $ 替换结尾双引号“$ with scsi_mod.scan=sync”。还确保在右双引号之前添加 scsi_mod.scan=sync。

您的命令应该是:

sed -i '/GRUB_CMDLINE_LINUX/s/"$/ scsi_mod.scan=sync"/' demofile

这将起到 Charm 的作用,请确保根据您的情况更改文件名。

© www.soinside.com 2019 - 2024. All rights reserved.