使用sed将字符串追加/替换到一行

时间:2018-08-16 15:34:00

标签: bash sed

我正在尝试解析文件test.txt并将“ https://”附加到文件中的以下字符串:

 "1234.def.efj.abcd-1.nopqrs.com"

注意:字符串中有空格,并且在引号的开头和结尾都有引号。 def,efj和nopqrs.com也是静态的,不会改变。

我正在尝试通过sed完成此操作。到目前为止,我有:

sed -e 's#^\s*[\"][0-9]+[\.]def[\.]efj[\.][a-z]+[\-][a-z]+[\-][0-9][\.]nopqrs[\.]com$#\s+[\"]https[\:][\/][\/][0-9]+[\.]def[\.]efj[\.][a-z]+[\-][a-z]+[\-][0-9][\.]nopqrs[\.]com#g' test.txt

当我运行该命令时,我得到的文件输出没有任何变化。 我浏览了其他sed帖子,似乎无法弄清楚我的表情出了什么问题。预先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

类似的事情应该起作用:

ng-repeat

说明:

  • sed -i 's#"\([^"]*\.nopqrs\.com\)"#"https://\1"#g' file.txt :就地编辑。 sed -i将相应地更新sedNote that the behaviour and syntax is implementation specific
  • file.txt
    • "\([^"]*\.nopqrs\.com\)":我们查找不带引号的任意数量的字符,后跟[^"]*\.nopqrs\.com
    • .nopqrs.com:sed用来创建捕获组的语法,该捕获组的内容与括号之间的表达式匹配
  • \( ... \):我们显示第一个捕获组的内容