假设我有这样的文件:
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 :(得分: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/
:要搜索的模式。 ^
是一个与行首相匹配的特殊字符。 /
用于分隔模式。del
:删除当前行。|
:分隔命令。在这种情况下,del
和put
。两者仍然是g
命令的一部分。put
:粘贴当前行后面的已删除行。wq
:将文件写入磁盘并退出。这必须作为单独的-c
参数放置,而不是像|
那样用put
分隔,因为否则只会在执行第一个匹配行后退出。