Pesquisa de site

Como usar vários delimitadores no AWK


AWK é uma poderosa linguagem de programação de correspondência de padrões que funciona na linha de comando para encontrar vários padrões em saídas de comando e arquivos.

Podemos considerar o AWK uma melhoria em relação ao Sed, pois oferece mais recursos, incluindo arrays, variáveis, loops e as boas e velhas expressões regulares.

Neste tutorial, discutiremos rapidamente como você pode usar vários delimitadores em um comando AWK. Antes de prosseguirmos, observe que este tutorial não é um guia para iniciantes do AWK, nem foi minha intenção.

Consulte o seguinte recurso se precisar de um guia para iniciantes do AWK.

https://linux-console.net/use_awk_linux/

O que são Delimitadores?

Tenho certeza de que, como você está lendo este artigo, está familiarizado com o conceito de delimitadores. Mas não custa recapitular, então vamos fazer isso agora:

Resumindo, os delimitadores são uma sequência de caracteres usados para separar valores de texto de string. Existem vários tipos comuns de delimitadores que incluem:

Colon

:

Semi-Colon

;

Period
Pipe

|

Backslash

\

Slash

/

Parenthesis

( )

Curly Braces

{ }

Square Brackets

[]

Space

Separador de campos AWK RegEx

O AWK Field Separator (FS) é usado para especificar e controlar como o AWK divide um registro em vários campos. Além disso, pode aceitar um único caractere de uma expressão regular. Depois de especificar uma expressão regular como o valor para o FS, o AWK verifica os valores de entrada para a sequência de caracteres definida na expressão regular.

Vamos implementar a funcionalidade do AWK para aceitar valores de Expressão Regular no separador de campo para conectar vários delimitadores.

Usar vários delimitadores

Para ilustrar como separar usando vários delimitadores no AWK, usarei um exemplo simples para mostrar como usar essa funcionalidade.

Suponha que você tenha um arquivo com dados da seguinte forma:

/org/gnone/desktop/interface:established:Apr17 16.59.09|org.gnome.Terminal.desktop[1099]

Do arquivo acima, desejamos obter a saída semelhante à mostrada abaixo:

org/gnome/desktop/interface established Apr 17 16:59.09 org.gnome.Terminal.desktop[1099]

Para separar o arquivo usando os vários delimitadores - neste caso, dois pontos, espaço e uma barra vertical - podemos usar um comando conforme mostrado abaixo:

awk -F'[: |]' '{print $1, $2, $3, $4, $5, $6}' user.log

O comando acima gera as informações conforme mostrado abaixo:

Como você pode ver, você pode combinar mais de um delimitador no separador de campo AWK para obter informações específicas.

Conclusão

Neste guia rápido, discutimos o uso do AWK para separar vários delimitadores em um arquivo de entrada.

Para obter mais informações sobre como expandir a funcionalidade do AWK FS, considere os seguintes recursos:

https://www.gnu.org/software/gawk/manual/html_node/Regexp-Field-Splitting.html

Artigos relacionados: