在Vim的搜索中运行AWK

Léo*_* 준영 4 vim awk

如何在Vim的搜索选择中运行AWK?

我的伪代码

%s/!awk '{ print $2 }'//d
Run Code Online (Sandbox Code Playgroud)

我试图删除文件中的给定列.

Ski*_*rou 20

虽然它们可能解决了原始海报的问题,但答案都没有解决问题标题中公布的问题.我建议删除问题的第一行并将其重新命名为"在vim中删除一列",这一点已被一致拒绝,这是一个解决方案,通过实际寻找到达那里的人到达那里.

删除列(这里是第二个,如OP的伪代码示例)与awkvim :

:%!awk '{$2=""; print $0}'
Run Code Online (Sandbox Code Playgroud)

当然,它也适用于文件的一部分 - 例如10到20行:

:10,20!awk '{$2=""; print $0}'
Run Code Online (Sandbox Code Playgroud)

至于"[运行] awkVim搜索中的选择",不知道你能准确地做到这一点,但无论如何搜索和替换是一件容易的事awk,如果不是它的主要目的.如果匹配,则以下内容将第二列中的"pattern"替换为"betterpattern":

:%!awk '$2~"pattern" {gsub("pattern","betterpattern",$2)}
Run Code Online (Sandbox Code Playgroud)

请注意,NOT运算符需要转义(\!而不是!).如果第二列中的值与"number"匹配并将其他行保持不变,则将其增量替换为第10列中的值:

:%!awk '$2~"number" {gsub($1,$1+10)} $2\!~"number" {print $0}'
Run Code Online (Sandbox Code Playgroud)

从这一点来说,它只是awk语法.

  • 我同意这个问题应该重命名,或者这个答案投票最正确. (2认同)

Pau*_*ce. 3

在命令模式下,按Ctrl-v进入可视模式,然后您可以使用光标移动键块选择该列。然后,您可以使用适当的 vim 命令和击键来拉取、放置或删除它或任何您需要的内容。