gpt4 book ai didi

regex - 返回具有 grep 匹配的制表符分隔的 csv 文件的整列

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:14 24 4
gpt4 key购买 nike

假设我有一个制表符分隔的 csv 文件,如下所示:

a b c  
d e f
g h i

使用命令行实用程序,有没有一种方法可以返回与所需 grep 模式匹配的整个列,或者在上面的示例中,我想为 b 的 grep 返回第二列?

最佳答案

 awk -F'\t' -v pat="b" 'NR==FNR{for(i=1;i<=NF;i++)if($i~pat)c[i];next}
{s="";for(i=1;i<=NF;i++)
if(i in c)s=s sprintf("%s\t", $i);
sub(/\t$/,"",s);print s}' file file

这一行完成了工作。

  • 它将打印与您的pat 匹配的任何列,并保持column 格式。
  • pat 是正则表达式,您可以将 shell 变量传递给 awk 行
  • 输出按照原来的列顺序

看一下示例:(我在您的第 3 列中添加了一个 b 以显示多个匹配案例):

kent$  cat f
a b c
d e b
g h i

kent$ awk -F'\t' -v pat="b" 'NR==FNR{for(i=1;i<=NF;i++)if($i~pat)c[i];next}{s="";for(i=1;i<=NF;i++)if(i in c)s=s sprintf("%s\t", $i);sub(/\t$/,"",s);print s}' f f
b c
e b
h i

关于regex - 返回具有 grep 匹配的制表符分隔的 csv 文件的整列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22378887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com