Awk

Como imprimir um intervalo de colunas usando o comando 'awk'

Como imprimir um intervalo de colunas usando o comando 'awk'
O comando 'awk' é um dos muitos comandos que podem ser usados ​​para imprimir uma série de colunas de dados tabulares no Linux. O comando 'awk' pode ser usado diretamente do terminal executando o arquivo de script 'awk'. Neste tutorial, mostraremos como imprimir um intervalo de colunas de dados tabulares.

Exemplo 1: imprimir um intervalo de colunas de uma saída de comando

O comando a seguir imprimirá a segunda, terceira e quarta colunas da saída do comando, 'ls -l'. Aqui, os números das colunas são declarados explicitamente, mas um comando mais eficiente para imprimir o mesmo intervalo de colunas é mostrado no próximo exemplo.

$ ls -l | awk 'print $ 2, $ 3, $ 4'

A seguinte saída é produzida pelo comando acima.

Exemplo 2: imprima o intervalo de colunas de um arquivo usando um para ciclo

Para acompanhar este exemplo e os outros exemplos neste tutorial, crie um arquivo de texto denominado marcas.TXT com o seguinte conteúdo:

ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

O seguinte comando 'awk' irá imprimir as primeiras três colunas de marcas.TXT. O para loop é usado para imprimir os valores da coluna, e o loop inclui três etapas. O NF variável indica o número total de campos ou colunas do arquivo.

marcas de $ cat.TXT
$ awk 'para (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

A seguinte saída será produzida executando o comando. A saída mostra o aluno IDs e as marcas para CSE203 e CSE102.

Exemplo 3: Imprima o intervalo de colunas, definindo as variáveis ​​inicial e final

O seguinte comando 'awk' imprimirá as três primeiras colunas da saída do comando 'ls -l' inicializando o iniciando e final variáveis. Aqui, o valor do iniciando variável é 1, e o valor do final variável é 3. Essas variáveis ​​são iteradas em um loop for para imprimir os valores da coluna.

$ ls -l | awk 'BEGIN primeiro = 1; último = 3
para (i = primeiro; i < last; i++) printf("%s ", $i) print $last '

A seguinte saída aparecerá após a execução do comando. A saída mostra os três primeiros valores da coluna da saída, 'ls -l'.

Exemplo 4: imprimir um intervalo de colunas de um arquivo com formatação

O seguinte comando 'awk' irá imprimir as três primeiras colunas de marcas.TXT usando printf e separador de campo de saída (OFS). Aqui, o loop for inclui três etapas, e três colunas serão impressas em sequência a partir do arquivo. OFS é usado aqui para adicionar espaço entre as colunas. Quando o valor do contador do loop (i) é igual a final variável, então uma nova linha (\ n) é gerada.

marcas de $ cat.TXT
$ awk -v start = 1 -v end = 3 'for (i = start; i<=end;i++) printf("%s%s",
$ i, (i == fim) ? "\ n": OFS) 'marcas.TXT

A seguinte saída será gerada após a execução dos comandos acima.

Exemplo 5: imprimir o intervalo de colunas de um arquivo usando uma declaração condicional

O seguinte comando 'awk' irá imprimir a primeira e a última coluna de um arquivo usando um loop for e uma instrução if. Aqui, o loop for inclui quatro etapas. O iniciando e final variáveis ​​são usadas no script para omitir a segunda e a terceira colunas do arquivo usando a condição if. A variável OFS é usada para adicionar espaço entre as colunas e a variável ORS é usada para adicionar uma nova linha (\ n) após imprimir a última coluna.

marcas de $ cat.TXT
$ awk -v start = 2 -v end = 3 'para (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'marcas.TXT

A seguinte saída aparecerá após a execução dos comandos acima. A saída mostra a primeira e a última coluna de marcas.TXT.

Exemplo 6: Imprimir o intervalo de colunas de um arquivo usando a variável NF

O seguinte comando 'awk' irá imprimir a primeira e a última coluna do arquivo usando uma variável NF. Nenhum loop ou instruções condicionais são usados ​​para imprimir os valores da coluna. NF indica o número de campos. Existem quatro colunas em marcas.TXT. $ (NF-3) define a primeira coluna, e $ NF indica a última coluna.

marcas de $ cat.TXT
$ awk 'print $ (NF-3) "" $ NF' marcas.TXT

A seguinte saída é produzida executando os comandos acima. A saída mostra a primeira e a última coluna de marcas.TXT.

Exemplo 7: imprimir o intervalo de colunas de um arquivo usando substr () e index ()

A função index () retorna uma posição se o segundo valor do argumento existir no primeiro valor do argumento. A função substr () pode receber três argumentos. O primeiro argumento é um valor de string, o segundo argumento é a posição inicial e o terceiro argumento é o comprimento. O terceiro argumento de substr () é omitido no seguinte comando. Como a coluna começa em $ 1 no comando 'awk', a função index () retornará $ 3, e o comando imprimirá de $ 3 a $ 4.

marcas de $ cat.TXT
marcas $ awk 'print substr ($ 0, index ($ 0, $ 3))'.TXT

A seguinte saída será produzida executando os comandos acima.

Exemplo 8: imprimir sequencialmente um intervalo de colunas de um arquivo usando printf

O seguinte comando 'awk' imprimirá a primeira, segunda e terceira colunas de marcas.txt definindo espaço suficiente para 10 caracteres.

marcas de $ cat.TXT
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' marcas.TXT

A seguinte saída será produzida executando os comandos acima.

Conclusão

Existem várias maneiras de imprimir o intervalo de colunas da saída do comando ou de um arquivo. Este tutorial mostra como o comando 'awk' pode ajudar os usuários Linux a imprimir conteúdo de dados tabulares.

Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...