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

unix command cut + grep to extract some detailed information

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

  1. 前2个字符必须是21
  2. 第54个字符需要为0或6
  3. 57-58字符需要大于49

如果可能的话,我需要在一个命令中使用它。 我尝试了以下方法:

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 的匹配模式的东西,这是不正确的。

我怎样才能做到这一点?

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

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

简要说明,

substr([=12=],s,l):提取[=13=]的子串,从s开始,长度为l