我想在“ target'cheney11'do”之后插入一行,如何用sed完成它?

时间:2018-07-10 16:11:35

标签: sed

我的文件,像这样:

cheney
fang
130034
target 'cheney11' do
    pod xxx
end
target 'cheney22' do
    pod xxx 
end

我想插入一行

:git=>www.google.com, :branch=>'master'" afert "target 'cheney11' do

发现结果看起来像这样:

cheney
fang
130034
target 'cheney11' do
    :git=>www.google.com, :branch=>'master'
    inerset a line like 
    pod xxx
end
target 'cheney22' do
    pod xxx 
end

注意::git=>www.google.com, :branch=>'master'之前有五个空格

2 个答案:

答案 0 :(得分:0)

能否请您尝试关注一下,并告诉我们这是否对您有帮助。

awk '
/target \047cheney11\047 do/{
  print "    :git=>www.google.com, :branch=>\047master\047" ORS $0;
  next
}
1' Input_file

> temp_file && mv temp_file Input_file附加到上面的代码中,以防您也要将其输出保存到相同的Input_file。

解决方案2: 如下使用sed

sed "s/target 'cheney11' do/    :git=>www.google.com, :branch=>'master'\n&/" Input_file

请使用sed -i.bak进行备份并将更改保存到Input_file中,或者使用sed -i选项仅将输出保存到Input_file本身中。

答案 1 :(得分:0)

  

a \
   文本附加文本,每个嵌入的换行符前都有一个反斜杠

$ sed "/target 'cheney11'/a \
\    :git=>www.google.com, :branch=>'master'" file

测试:

kent$  cat f
cheney
fang
130034
target 'cheney11' do
        pod xxx
end
target 'cheney22' do
        pod xxx
end

kent$  sed "/target 'cheney11'/a \
\    :git=>www.google.com, :branch=>'master'" f
cheney
fang
130034
target 'cheney11' do
    :git=>www.google.com, :branch=>'master'
        pod xxx
end
target 'cheney22' do
        pod xxx
end