linux - 在多个文件中的现有字符串周围添加引号

标签 linux shell awk sed

我想在多个文件中的现有字符串周围添加双引号。

check_envurl!ma100mlpapl002!-p 8080!-u /apollo/info?section=ERROR!!!!!

我想在第一个“-u”之后、/之前和 ! 之前添加引号。所以它会是

check_envurl!ma100mlpapl002!-p 8080!-u "/apollo/info?section=ERROR"!!!!!

我尝试过使用 sed 替换,但不符合标准

define service {
        host_name                       ma100mlpapl002
        servicegroups                   Environment URL
        service_description             http://ma100mlpapl002:8080/apollo/info?section=ERROR
        display_name                    http://ma100mlpapl002:8080/apollo/info?section=ERROR
        check_command                   check_envurl!ma100mlpapl002!-p 8080!-u /apollo/info?section=ERROR!!!!!
        max_check_attempts              3
        check_interval                  15
        retry_interval                  1
        check_period                    24x7
        contact_groups                  siteops

    sed '/pattern/a some text here' filename

最佳答案

试试这个:

$ sed 's/-u \([^!]*\)!/-u "\1"!/' <<< 'check_envurl!ma100mlpapl002!-p 8080!-u /apollo/info?section=ERROR!!!!!'
check_envurl!ma100mlpapl002!-p 8080!-u "/apollo/info?section=ERROR"!!!!!

关于linux - 在多个文件中的现有字符串周围添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494830/

相关文章:

perl - 如何使用 AWK 或 sed 或 Perl 进行此类替换?

linux - find.pm 错误 "encountered a second time"

Linux - 编辑剪贴板内容的脚本

linux - 导出在另一个文件中定义的变量

linux - if 文件名(只是名称)比较 shell 脚本

python - 根据公共(public)列合并多个行数不等的文件,形成计数矩阵文件

linux - 当进程运行在 X 服务器上时会发生什么变化

linux - Sed 一个空字符串并替换它

linux - 使用 putty/ssh 并利用 grep -rn 有没有一种方法可以精确搜索

sed - awk 能做什么而 sed 不能?