如何替换变量字符串之前和/或之后的文本?

如何替换变量字符串之前和/或之后的文本?

我需要更改文件中非固定字符串前后的文本。
我将展示一个例子:

this-is-cat-really-weird  
this-is-dog-really-weird  

there-is-cat-really-weird  
there-is-dog-really-weird  

that-is-cat-really-weird  
that-is-dog-really-weird  

我只需要编写一条指令来更改前两行,因为所需的输出如下:

this-is-cat-really-nice  
this-is-dog-really-nice  

there-is-cat-really-weird  
there-is-dog-really-weird  

that-is-cat-really-weird  
that-is-dog-really-weird 

我无法使用 awk 找到合适的解决方案。
另外,如果我有 100 多行这样的代码需要更改,并且这些代码可能位于文件中的任何位置,我该如何编写工作指令?如能提供
任何帮助,我将不胜感激。

答案1

使用 sed 来处理一系列行:

$ sed '1,2s/weird/nice/' input.txt
this-is-cat-really-nice  
this-is-dog-really-nice  

there-is-cat-really-weird  
there-is-dog-really-weird  

that-is-cat-really-weird  
that-is-dog-really-weird  

匹配文件中的任何位置:

$ sed '/this-is-cat-really/{s/weird/nice/;N;s/weird/nice/}' input.txt 
this-is-cat-really-nice  
this-is-dog-really-nice  

there-is-cat-really-weird  
there-is-dog-really-weird  

that-is-cat-really-weird  
that-is-dog-really-weird  

this-is-cat-really-nice  
this-is-dog-really-nice  

相关内容