目标:
/^Mar 查找模式(行以Mar开头) GN 找到此模式的最后出现 dgg 从当前位置删除到文件顶部 :wq 写入并退出
我已经尝试了:
vi -c /^Mar -c GN -c dgg -c wq testfile.log
它会报错,提示GN不是编辑器命令 dgg不是编辑器命令
但当我在vi内输入相同命令时,它们可以正常工作。我希望我只是缺少一些简单的东西,但我已经在Google上搜索了很长时间,显然没有问对问题。
谢谢!
目标:
/^Mar 查找模式(行以Mar开头) GN 找到此模式的最后出现 dgg 从当前位置删除到文件顶部 :wq 写入并退出
我已经尝试了:
vi -c /^Mar -c GN -c dgg -c wq testfile.log
它会报错,提示GN不是编辑器命令 dgg不是编辑器命令
但当我在vi内输入相同命令时,它们可以正常工作。我希望我只是缺少一些简单的东西,但我已经在Google上搜索了很长时间,显然没有问对问题。
谢谢!
-c GN
将表现得像在vim内运行:GN
一样。在命令前加上“normal”以在正常模式下解释它:
vi -c "/^Mar" -c "normal GN" -c "normal dgg" -c wq testfile.log
在命令行中写的命令是 ex 命令。当使用 vim 时,它们是以 ":" 前缀的命令。您可以重写命令行以使用 ex 命令:
vi -c '/^Mar' -c '$' -c '?' -c '1,.d' -c 'wq' testfile.log
这应该基本上与所需的相同 - 找到模式,转到最后一行,向后找到模式,删除从开头到当前行的所有内容,写入并退出。