vim - 在 Vim 的搜索中运行 AWK

标签 vim awk

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

我的伪代码

%s/!awk '{ print $2 }'//d

我正在尝试删除文件中的给定列。

最佳答案

尽管他们可能解决了原始海报的问题,但没有一个答案解决问题标题中所宣传的问题。我建议删除问题的第一行并将其重新命名为“在 vim 中删除一列”已被一致拒绝,这里是通过实际寻找到达那里的人的解决方案。

使用 awk 删除一列(这里是第二列,如 OP 的伪代码示例中所示)在 vim :

:%!awk '{$2=""; print $0}'

当然,它也适用于文件的一部分——例如对于第 10 到 20 行:
:10,20!awk '{$2=""; print $0}'

至于“[running] awk in Vim 的搜索选择”,不确定您是否可以完全做到这一点,但无论如何,搜索和替换对于 awk 来说是一件容易的事。 ,如果不是它的主要目的。如果匹配,以下将第二列中的“pattern”替换为“betterpattern”:
:%!awk '$2~"pattern" {gsub("pattern","betterpattern",$2)}

请注意 NOT运算符需要转义( \! 而不是 ! )。如果第二列中的值与“数字”匹配并让其他行保持不变,则以下内容将其替换为 10 的增量:
:%!awk '$2~"number" {gsub($1,$1+10)} $2\!~"number" {print $0}'

从这一点来看,它只是 awk句法。

关于vim - 在 Vim 的搜索中运行 AWK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1934520/

相关文章:

linux - vim 和 sudo 可执行文件的路径

linux - awk 脚本不能与 gsub $10 一起正常工作

bash - 从文件中读取索引 `n` 低于匹配给定正则表达式的行的所有行

linux - 命令通过 'bash -c' 失败,但可以直接运行

linux - 在版本名称和版本号之间进行过滤

awk 如何打印计数器的最后一个值?

regex - 从行尾到下一行搜索

Vim:自定义选项卡完成,从 bash 脚本检索结果

VIM自动插入PHPdoc

vim - 在 vimscript 中创建目录