Como analisar o arquivo delimitado por tabulações usando `awk`
`tab` é usado como um separador no arquivo delimitado por tabulações. Este tipo de arquivo de texto é criado para armazenar vários tipos de dados de texto em um formato estruturado. Existem diferentes tipos de comando no Linux para analisar esse tipo de arquivo. O comando `awk` é uma das maneiras de analisar o arquivo delimitado por tabulações de maneiras diferentes. Os usos do comando `awk` para ler o arquivo delimitado por tabulações foram mostrados neste tutorial.
Crie um arquivo delimitado por tabulações:
Crie um arquivo de texto chamado users.txt com o seguinte conteúdo para testar os comandos deste tutorial. Este arquivo contém o nome do usuário, e-mail, nome de usuário e senha.
users.txt
Md. Robin robin@gmail.com robin89 563425
Nila Hasan nila@gmail.com nila78 245667
Mirza Abbas mirza@gmail.com mirza23 534788
Aornob Hasan aornob@gmail.com arnob45 778473
Nuhas Ahsan nuhas@gmail.com nuhas34 563452
Exemplo-1: imprima a segunda coluna de um arquivo delimitado por tabulações usando a opção -F
O seguinte comando `sed` imprimirá a segunda coluna de um arquivo de texto delimitado por tabulações. Aqui, a opção '-F' é usada para definir o separador de campo do arquivo.
$ awk -F '\t' '{print $2}' users.txt
Exemplo-2: Imprima a primeira coluna de um arquivo delimitado por tabulações usando a variável FS
O seguinte comando `sed` imprimirá a primeira coluna de um arquivo de texto delimitado por tabulações. Aqui, a variável FS ( Separador de Campo) é usada para definir o separador de campo do arquivo.
$ awk '{ print $1 }' FS='\t' users.txt
Exemplo-3: imprimir a terceira coluna de um arquivo delimitado por tabulações com formatação
O comando `sed` a seguir imprimirá a terceira coluna do arquivo de texto delimitado por tabulações com formatação usando a variável FS e printf. Aqui, a variável FS é usada para definir o separador de campo do arquivo.
$ awk 'BEGIN{FS="\t"} {printf "%10s\n", $3}' users.txt
A saída a seguir aparecerá após a execução dos comandos. A terceira coluna do arquivo contém o nome de usuário que foi impresso aqui.
Exemplo-4: Imprima a terceira e a quarta colunas do arquivo delimitado por tabulações usando OFS
OFS (Output Field Separator) é usado para adicionar um separador de campo na saída. O seguinte comando `awk` dividirá o conteúdo do arquivo com base no separador tab( ) e imprimirá a 3ª e a 4ª colunas usando o tab( ) como separador.
$ awk -F "\t" 'OFS="\t" {print $3, $4 > ("output.txt")}' users.txt
$ cat output.txt
A seguinte saída aparecerá depois de executar os comandos acima. A 3ª e a 4ª colunas contêm o nome de usuário e a senha, que foram impressos aqui.
Exemplo-5: Substitua o conteúdo específico do arquivo delimitado por tabulações
A função sub() é usada no `awk para comandar a substituição. O seguinte comando `awk` irá procurar o número 45 e substituí-lo pelo número 90 se o número de busca existir no arquivo. Após a substituição, o conteúdo do arquivo será armazenado no arquivo output.txt.
$ awk -F "\t"'{sub(/45/,90);print}' users.txt > output.txt
$ cat output.txt
Exemplo-6: Adicionar string no início de cada linha de um arquivo delimitado por tabulações
A seguir, no comando `awk`, a opção ‘-F’ é utilizada para dividir o conteúdo do arquivo com base na tabulação ( ). OFS costumava adicionar uma vírgula (,) como um separador de campo na saída. A função sub() é usada para adicionar a string ‘—→’ no início de cada linha da saída.
$ awk -F "\t" '{{OFS=","};sub(/^/, "---->");print $1,$2,$3}' users.txt
Exemplo-7: Substitua o valor de um arquivo delimitado por tabulações usando a função gsub()
A função gsub() é usada no comando `awk` para substituição global. Todos os valores de string do arquivo serão substituídos onde o padrão de pesquisa corresponder. A principal diferença entre as funções sub() e gsub() é que a função sub() interrompe a tarefa de substituição após encontrar a primeira correspondência, e a função gsub() procura o padrão no final do arquivo para substituição. O comando `awk` a seguir pesquisará a palavra 'nila' e 'Mira' globalmente no arquivo e substituirá todas as ocorrências pelo texto, 'Nome inválido', onde a palavra pesquisada corresponder.
$ awk -F ‘\t’ '{gsub(/nila|Mira/, "Invalid Name"); print}' users.txt
A seguinte saída aparecerá depois de executar os comandos acima. A palavra 'nila' existe duas vezes na 3ª linha do arquivo que foi substituída pela palavra 'Nome inválido' na saída.
Exemplo-8: Imprimir o conteúdo formatado de um arquivo delimitado por tabulações
O seguinte comando `awk` imprimirá a primeira e a segunda colunas do arquivo com formatação usando printf. A saída mostrará o nome do usuário colocando o endereço de e-mail entre colchetes.
$ awk -F '\t' '{printf "%s(%s)\n", $1,$2}' users.txt
Conclusão
Qualquer arquivo delimitado por tabulação pode ser facilmente analisado e impresso com outro delimitador usando o comando `awk`. As formas de analisar arquivos delimitados por tabulações e imprimir em diferentes formatos foram mostradas neste tutorial usando vários exemplos. Os usos das funções sub() e gsub() no comando `awk` para substituir o conteúdo do arquivo delimitado por tabulações também são explicados neste tutorial. Espero que este tutorial ajude os leitores a analisar o arquivo delimitado por tabulação facilmente depois de praticar os exemplos deste tutorial corretamente.