如何使用Shell脚本在VIM中的关键字之前添加几行

时间:2017-09-14 13:47:13

标签: linux shell vim

我有这样的文件,

 xyz:\
  :admin.auth=y:\
  :cmd.stopndm=y:\
  :pstmt.copy.ulimit=y:\
  :pstmt.upload=y:\

如何找到xyz并在该行之前添加几行。所以文件看起来像这样,

abc@1234:\
 :admin.id=XXX:\
 :descrip=XXX:

xyz:\
 :admin.auth=y:\
 :cmd.stopndm=y:\
 :pstmt.copy.ulimit=y:\

这应该使用shell脚本更新。谁能在这帮助我?

2 个答案:

答案 0 :(得分:2)

我会使用,而不是vim

$ cat file
xyz:\
 :admin.auth=y:\
 :cmd.stopndm=y:\
 :pstmt.copy.ulimit=y:\
 :pstmt.upload=y:\
$ ed file <<'END_ED'
/xyz
i
abc@1234:\
 :admin.id=XXX:\
 :descrip=XXX:

.
w
q
END_ED
$ cat file
abc@1234:\
 :admin.id=XXX:\
 :descrip=XXX:

xyz:\
 :admin.auth=y:\
 :cmd.stopndm=y:\
 :pstmt.copy.ulimit=y:\
 :pstmt.upload=y:\

答案 1 :(得分:0)

这个简单的编辑任务你不需要Vim。虽然它可以用于自动化,但我只会使用它,如果我绝对需要一个插件或自定义Vimscript来执行编辑任务。对于脚本,有更简单的工具。

以下是使用的解决方案:

current_url
$ cat > file <<'EOF'
xyz:\
 :admin.auth=y:\
 :cmd.stopndm=y:\
 :pstmt.copy.ulimit=y:\
 :pstmt.upload=y:\
EOF
$ sed -i -e '/xyz:/i\
abc@1234:\\\
 :admin.id=XXX:\\\
 :descrip=XXX:\

' file

搜索($ cat file abc@1234:\ :admin.id=XXX:\ :descrip=XXX: xyz:\ :admin.auth=y:\ :cmd.stopndm=y:\ :pstmt.copy.ulimit=y:\ :pstmt.upload=y:\ )之前应该插入内容的行,然后首先通过/xyz:/命令插入文本(反斜杠必须加倍,换行必须以1结尾)