sed命令将字符串附加在双qoutes内

时间:2019-05-29 12:04:32

标签: sed

我想更新远程linux服务器上的文件。为此,我正在使用sed命令。因为我必须先搜索该行然后更新值

我的文件包含以下内容:

GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ankur"
GRUB_DISABLE_RECOVERY="true"

所以使用sed命令我必须在双qoutes中追加sharma 意味着执行行之后将是grub_cmdline_linux =“ ankur sharma”

我已经尝试过此命令

sed -i 's+\(GRUB_CMDLINE_LINUX.*\)+\1 sharma+g' '/etc/default/grub.bak'

此命令sharma将附加在行的末尾,但应附加在双qoutes内

预期输出:

GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ankur sharma"
GRUB_DISABLE_RECOVERY="true"

2 个答案:

答案 0 :(得分:1)

不是吗

sed '/^GRUB_CMDLINE_LINUX=/s/"$/ sharma"/' /etc/default/grub.bak

答案 1 :(得分:0)

$ sed 's/GRUB_CMDLINE_LINUX="[^"]*/& sharma/' file
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ankur sharma"
GRUB_DISABLE_RECOVERY="true"