混淆了[01459]在awk中的含义是什么?

tv6aics1  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(353)

# !/usr/bin/env bash

for year in all/*
do
    echo -ne `basename $year .gz`"\t"
    gunzip -c $year | \
    awk '{ temp = substr($0, 88, 5) + 0;
          quality = substr($0, 93, 1);
          if (temp !=9999 && quality ~ /[01459]/ && temp > max) max = temp }
        END { print max }'
done

我在hadoop的第四版的明确指南下面练习。我已经做了第一个练习,它是有效的,但我不明白质量的含义~/[01459]/。

kg7wmglp

kg7wmglp1#

这是一个正则表达式匹配,使用括号表达式。
如果质量与这些字符中的任何一个匹配,则为真。

vdgimpew

vdgimpew2#

这称为字符列表。它匹配方括号中的任何一个字符。例如: [014] 匹配字符串中的任何字符“0”、“1”或“4”。
主要来自:http://www.math.utah.edu/docs/info/gawk_5.html

cl25kdpy

cl25kdpy3#

根据http://www.math.utah.edu/docs/info/gawk_5.html
exp~/regexp/
如果表达式exp(作为字符串)与regexp匹配,则为真。

[...]
这称为字符列表。它匹配方括号中的任何一个字符。
因此 quality ~ /[01459]/true 如果 quality 包含任何 1 , 4 , 5 , 9

相关问题