我有 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}'
FS=
定义字段分隔符,即。是什么分隔了你的列。$3
是第三个字段,即。柱子。~/[A-G]+/
告诉awk
匹配仅包含字符 AG 的正则表达式..
awk
是一个面向行的流编辑器。它将通过您的输入流进行,例如。并检查bzcat $file |
每行的第三个“字段”是否有匹配的正则表达式,如果匹配,将运行大括号内的命令列表,在本例中只是一个简单的打印语句,默认打印整行。
awk
是一个很棒且非常强大/功能丰富的程序,至少值得学习它的基础知识。查看其man
页面了解更多信息。