dividir cadeia com awk e delimitador

2

eu tenho um arquivo de log como:

1::
10::
127.0.0.1
172.17.1.1

Eu quero o awk para dividir a string em colunas no :: delimiter. alguma coisa como:

awk {print}

e o resultado:

1

e

awk {print}

e o resultado:

10

e

awk {print}

e o resultado:

127.0.0.1
172.17.1.1

eu não sei como dividir com o awk com delimiter ::.

    
por Morteza Soltanabadiyan 21.03.2014 / 09:43

1 resposta

5

Você pode definir o separador de campo usando a opção -F . Use os seguintes comandos no terminal

$ awk -F "::" 'NR==1 {print }' logfile.txt 
1
$ awk -F "::" 'NR==2 {print }' logfile.txt 
10
$ awk -F "::" 'NR!=1 && NR!=2 {print }' logfile.txt
127.0.0.1
172.17.1.1
A variável

NR armazena o número da linha. Por exemplo, considere seu arquivo, com :: como separador de campo

                          
NR=1    1
NR=2    10
NR=3    127.0.0.1
NR=4    172.17.1.1

and so on.

Se você usar . como separador de campo, será como

                               
NR=1    1::
NR=2    10::
NR=3    127         0          0      1
NR=4    172         17         1      1
    
por souravc 21.03.2014 / 09:54