Shell 使用SED替换与正则表达式匹配的文件或行中的内容
如何使用SED命令替换文件中的行/部分行Shell 使用SED替换与正则表达式匹配的文件或行中的内容,shell,unix,sed,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}\u服务器匹配的行,然后用
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}\u服务器匹配的行,然后用env_2替换env_1
找到正则表达式以查找所需的行
^搜索文本[a-z]\*\u服务器。*$
现在,如何添加要替换的SED语法
附言:我不是shell方面的专家你的正则表达式很接近。您可以使用:
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
假设国家代码是两个字母,你可以这样做
sed -Ei 's/(search_text_[a-z]{2}_server=value\.)env_1/\1env_2/' file
我应该这样做
这里发生了什么事
[a-z]{2}
检查构成国家代码的两个字母s
命令用于替换->s/pattern/replacement
()
选择匹配的正则表达式模式以供重用,注意\1
以供重用-i
是sed
的就地编辑选项,它使文件中的更改永久化我们不为你做家庭作业。试试看。如果你不能让它发挥作用,请公布你所做的事情和你遇到的问题,我们将尽力帮助你。@RobertColumbia我在做了自己的研究后问过你。注意:请不要改变这样一个老问题,尝试回答你的问题中甚至没有提到的问题。我建议你问一个新问题,并回滚你的最新更改。@anubhava我不是在回答一个没有被问到的问题。我正在为我自己的问题提供答案。@anubhava我把你的答案标记了回去,也删除了我的答案。我想你可以把我的问题投回去,这很有效。它以我想要的方式显示在控制台上,以便在mac终端上工作
sed-i''s/^\(search-text'.[1-9'.*.\u server=.*)env_1\./\1env_2\./'test.txt
-E
也可以在OSX上工作,因此sed-i'.-E/^(search-text'.[a-z'.*.\u server=.*)env_1\/\1env_2\./'文件也可以工作