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 CSE2021109 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 = 3para (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.TXTmarcas $ 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.