![](/img/trans.png)
[英]A linux shell script to find a string and add a few lines before the string
[英]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腳本進行更新。 有人能幫我一下嗎?
我會用ed而不是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來執行編輯任務時,才使用它。 對於腳本編寫,有更簡單的工具。
這是使用sed的解決方案:
$ 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.