Combinando instruções awk

1

Gostaria de combinar essas declarações do 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 

para obter uma declaração imprimindo todas as linhas que começam com uma letra maiúscula E contém um único campo e cada linha com mais de dois campos, cada um começando com um inteiro.

Exemplo de entrada:

NAME_1
1   
11  11
key 11
KEY KEY

Resultado esperado:

NAME_1
11  11
    
por dovah 27.07.2014 / 18:40

1 resposta

1

Você pode combiná-los usando awk logical && e || (Veja mais awk boolean operadores ):

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

Você deve usar [[:upper:]] para corresponder à letra maiúscula porque [A-Z] só funciona na localidade C.

    
por 27.07.2014 / 18:49

Tags