簡體   English   中英

如何使用Shell腳本在VIM中的關鍵字之前添加幾行

[英]How to add few lines before a keyword in VIM using Shell Script

我有一個這樣的文件,

 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腳本進行更新。 有人能幫我一下嗎?

我會用而不是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:\

您不需要Vim即可完成此簡單的編輯任務。 盡管它可以用於自動化,但只有在絕對需要插件或自定義Vimscript來執行編輯任務時,才使用它。 對於腳本編寫,有更簡單的工具。

這是使用的解決方案:

$ 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:/ )中搜索應該插入內容的行,然后首先通過i命令插入文本(反斜杠必須加倍,換行符必須以1結尾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM