1

我有一个需要通过 shell 脚本修改的文件。

需要做到以下几点: 1. 在文件中搜索关键字。2. 用我提供的行文本替换此关键字的下一行。

例如,我的文件有以下文本:

(一些文本) (一些文本) (text_to_search) (text_to_replace) (一些文本) (一些文本) (一些文本)

我需要搜索文件并重写文件替换行,使剩余内容保持不变。

如何才能做到这一点?

问候

4

3 回答 3

2
awk ' zap==1 {print "my new line goes here"; zap=0; next}
      /my pattern/ {zap=1; print $0; next}
      {print $0} '  infile > newfile

假设我得到了你想要的......

   var="this is the line of text to insert" 
   awk -v lin="$var"  ' zap==1 {print lin ; zap=0; next}
          /my pattern/ {zap=1; print $0; next}
          {print $0} '  infile > newfile

awk 内部变量lin,定义:-v lin="$var"被命名linlin来自外部 bash 变量var

于 2013-04-26T04:24:18.233 回答
0
 sed -i '/pattern/r/dev/stdin' file

脚本将等待我们输入换行符并交互地按 ctrl +d +

于 2013-04-26T10:22:34.073 回答
0
   cat file

first
second
third
fourth
fiveth

set var = "inserted"
sed '/second/a\'$var file

first
second
inserted
third
fourth
fiveth
于 2013-04-26T12:08:07.733 回答