我有一个要求,我相信我可以在vi中做到(我确信还有很多其他解决方案),就是这样。
我有一个看起来像这样的文件
1234一些文字在这里的其余部分
1235其他一些文本在这里的其余部分
我想要做的是删除文本,并将此处包含在该行的末尾,留下我的话;
1234一些文字
1235其他一些文字
我已经完成了搜索和替换vi中的内容,但我不确定如何进行搜索然后运行命令。
任何帮助,一如既往地非常感谢。
感谢您的期待
答案 0 :(得分:8)
怎么样:
:%s/HERE.*//
此模式将替换以HERE
开头的行部分,并将其替换为空。
答案 1 :(得分:1)
d $ 的组合将从光标删除到当前行的末尾。因此,如果您使用/
命令进行搜索,那么它将会......:
/HERE<enter>d$
答案 2 :(得分:0)
这也可以使用sed来完成:
sed "s/HERE.*//"
示例:
echo "this is a test HERE test" | sed "s/HERE.*//"
结果:
this is a test
答案 3 :(得分:0)
与往常一样,在vi
中,有许多方法可以为这只特殊的猫提供皮肤。正如已经说过的,解决这个问题的简单方法是:
:%s/HERE.*//
然而,要回答你更普遍的问题:
我已经完成了搜索和替换vi中的内容,但我不确定如何进行搜索然后运行命令。
你想要:g[lobal]
命令:
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the lines within [range] where {pattern} matches.
对于您的确切示例,这实际上会更加冗长,但对于删除与特定模式匹配的行等任务,它会更加简洁。
e.g。如果你想删除包含HERE
的所有行,你可以运行:
:g/HERE/d
Factoid:此命令表单是grep
名称的来源:g/re/p
,global/{regex}/print
的简写。