我在 awk 中使用以下语句,并从另一个命令将文本通过管道传输给它:
awk 'match($0,/(QUOTATION|TAX INVOICE|ADJUSTMENT NOTE|DELIVERY DOCKET|PICKING SLIP|REMITTANCE ADVICE|PURCHASE ORDER|STATEMENT)/) && NR<11 {print substr($0,RSTART,RLENGTH)}'
这几乎可以满足我的需要(在输入的前 10 行中找到正则表达式中的一个单词并打印该单词)。我需要做的主要事情是在没有匹配的情况下输出一些东西。例如,如果在前十行中没有找到这些单词,它将输出UNKNOWN
.
我还需要将输出限制为第一个匹配项,因为我需要确保每个输入文件有一行输出。如果需要,我可以这样做head
或问另一个问题,我只在此处包含它,以防它影响如何输出不匹配的文本。
我也没有将 awk 作为一种工具绑定到 - 如果有更简单的方法可以使用 sed 或其他方法来做到这一点,我愿意接受。