2017-08-24 28 views
-1

假設我有一個這樣的文件:搜索以短語開頭並與下一行交換的行?

Stuff here 
TERM here 
Other stuff 
Stuff here 
TERM HERE 
Additional stuff 
End of stuff 

是否有一個Linux的命令行工具,會發現所有以TERM和交換開始與下一行整行,從而產生行:

Stuff here 
Other stuff 
TERM here 
Stuff here 
Additional stuff 
TERM HERE 
End of stuff 

非常感謝。

回答

0

您可以用Vim非交互方式爲vim -e或只是ex用這個命令:

ex filename -u NONE -c 'g/^TERM/del | put' -c 'wq' 

說明:

  • ex filename:非交互編輯filename
  • -u NONE:不要加載一個vimrc文件。
  • -c:加載文件後運行以下命令
  • g:global命令。它搜索一個模式,然後在每個找到它的地方執行一個命令。
  • /^TERM/:要搜索的模式。 ^是一個匹配行首的特殊字符。 / s被用來分隔模式。
  • del:刪除當前行。
  • |:分隔命令。在這種情況下,delput。兩者仍然是g命令的一部分。
  • put:在當前行後面粘貼刪除的行。
  • wq:將文件寫入磁盤並退出。這必須作爲一個單獨的-c參數,而不是像put那樣與|分開,因爲它會在僅執行第一個匹配行後退出。
+0

不錯!非常感謝。對不起,我顯然沒有足夠的聲望點來提高答案,如果其他人能夠這樣做,我會很感激。很棒。 – rahim123