Regexp在文件中找到正则表达式后添加字符串

时间:2017-11-17 14:54:50

标签: regex replace emacs

一开始我正在寻找一个Emacs命令,我发现query-replace-regexp但是我没有找到如何用这个命令解决我的问题。 我正在寻找文件中的另一个字符串替换字符串。

我想替换它:

  

container random1-string {

由此:

  

container random1-string {

     

string:string-string 0;

或者这个:

  

容器1字符串{

由此:

  

容器1字符串{

     

string:string-string 0;

或者这个:

  

容器字符串-24 {

由此:

  

容器字符串-24 {

     

string:string-string 0;

random1-string是一个随机字符串。 我正在寻找一个递归命令。我必须改变400个节点。 我可以使用每个linux命令。

1 个答案:

答案 0 :(得分:0)

如果你的随机字符串没有特定的模式,那么很难使用正则表达式来有效地替换它。

您可以做的是列出要在文件中更改的变量名称( strings_list.in

random1-string
random2-string
random3-string

然后循环文件并以下列方式更改源文件:

for v in `cat strings_list.in`;
do
    sed -i "s/container\s+$v\{/container $v\{\nstring:string-string 0;/g" file_to_edit;
done;

在任何操作之前备份您的文件。

如果您的随机字符串实际上是变量,那么您可以在sed命令中使用以下正则表达式来处理该文件,并对其进行反向引用:

sed -i "s/container\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\{/container \1 \{\nstring:string-string 0;/g" file_to_edit;