如果列包含特定字符串,如何仅输出一行

如果列包含特定字符串,如何仅输出一行

我有 4 列,第三列包含字母 AG。我只想在列非空或包含 AG 时输出一行。这是我现在的代码。从压缩文件中读取。

bzcat $file | cut -d, -f3,4,20,21 |grep -E '[A-G]'|head -100 

答案1

你的问题有点困惑,但很明显,最适合这项工作的工具是awk.如果我明白您在寻找什么,请尝试以下操作:

awk 'BEGIN{FS=","}$3~/[A-G]+/{print}'
  1. FS=定义字段分隔符,即。是什么分隔了你的列。

  2. $3是第三个字段,即。柱子。

  3. ~/[A-G]+/告诉awk匹配仅包含字符 AG 的正则表达式..

awk是一个面向行的流编辑器。它将通过您的输入流进行,例如。并检查bzcat $file |每行的第三个“字段”是否有匹配的正则表达式,如果匹配,将运行大括号内的命令列表,在本例中只是一个简单的打印语句,默认打印整行。

awk是一个很棒且非常强大/功能丰富的程序,至少值得学习它的基础知识。查看其man页面了解更多信息。

相关内容