我需要更改文件中非固定字符串前后的文本。
我将展示一个例子:
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