如何在 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/