unix命令cut + grep来提取一些详细信息

时间:2017-08-01 07:55:34

标签: unix grep cut

我需要计算包含以下信息的文件行。

  1. 前2个字符必须为21
  2. 第54个字符需要为0或6
  3. 57-58字符需要大于49
  4. 如果可能,我需要在一个命令中使用它。 我尝试了以下方法:

      

    cut -c 1-2,54 $ filename | grep -e 210 -e 216

    这给了我前两个条件。 我不知道如何获得匹配的第三个条件。 如果我做这样的事情:

      

    cut -c 1-2,54,57-58 $ filename | grep -e 210 -e 216

    然后我得到的22160类似于模式,这是不正确的。

    我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用awk来实现目标。

awk '(substr($0,1,2)==21 && (substr($0,54,1)==0 || substr($0,54,1)==6) && substr($0,57,2)>49 ){count=count+1} END{print count==""?0:count}' Your_file

简要说明,

substr($0,s,l):从$0开始提取s的子字符串,其长度为l