使用SED替换与正则表达式匹配的文件或行中的内容

时间:2016-08-08 18:54:20

标签: shell unix sed

如何使用SED命令替换文件中的行/部分?

search_text_1_server=value.env_1.path_to_file
search_text_2_server=value.env_1.path_to_file
search_text_3_server=value.env_1.path_to_file
some_other_key=value.env_1.another_path

现在我想要一个sed命令来查找与正则表达式search_text_{any}_server and then replace env_1 with env_2

匹配的行

找到正则表达式以找到所需的行。

^search_text_[a-z_]\*_server.*$

现在如何添加SED语法来替换

PS:我不是shell的专家

2 个答案:

答案 0 :(得分:0)

你的正则表达式很接近。您可以使用:

sed -E 's/^(search_text_[a-z_]*_server=.*)env_1\./\1env_2\./' file

search_text_1_server=value.env_2.path_to_file
search_text_2_server=value.env_2.path_to_file
search_text_3_server=value.env_2.path_to_file
some_other_key=value.env_1.another_path

答案 1 :(得分:0)

假设国家/地区代码是两个字母,您可以

state

应该这样做。

这里发生了什么

  1. sed -Ei 's/(search_text_[a-z]{2}_server=value\.)env_1/\1env_2/' file 检查制作国家/地区代码的两个字母
  2. sed [a-z]{2}命令用于替换 - > s
  3. s/pattern/replacement选择匹配的正则表达式模式以供重用,请注意()以便重复使用
  4. \1-i的就地编辑选项,可在文件中永久更改