组合 awk 语句

组合 awk 语句

我想合并这些 awk 语句:

awk -F'\t' 'NF>1 && $NF!=""' #prints every row with more than two fields 
awk '$1 ~ /^[0-9]/'        #prints every row starting with a number 
awk -F'\t' 'NF==1'           #prints every row with one only field
awk '$1 ~ /^[A-Z]/'        #prints every row starting with a capital letter 

为了得到一条语句,打印以大写字母开头的每一行并且只包含一个字段,并且每一行都有两个以上的字段,每个字段都以整数开头。

输入示例:

NAME_1
1   
11  11
key 11
KEY KEY

预期输出:

NAME_1
11  11

答案1

您可以使用awk逻辑&&和将它们组合起来||(查看更多awk 布尔运算符):

$ awk '(NF > 1 && $1 ~ /^[0-9]/) || (NF == 1 && $1 ~ /^[[:upper:]]/)' file
NAME_1
11  11

您应该使用[[:upper:]]匹配大写字母,因为[A-Z]仅适用于 C 语言环境。

相关内容