Como imprimir uma variedade de colunas usando o comando 'awk'

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

Exemplo 1: Imprima uma variedade 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 da coluna 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 a gama de colunas de um arquivo usando um para laço

Para acompanhar este exemplo e os outros exemplos deste tutorial, crie um arquivo de texto chamado 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' imprimirá as três primeiras colunas de marcas.TXT. O para O loop é usado para imprimir os valores da coluna e o loop inclui três etapas. O Nf A variável indica o número total de campos ou colunas do arquivo.

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

A saída a seguir 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 variáveis ​​iniciais e finais

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

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

A saída a seguir 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: Imprima uma variedade de colunas de um arquivo com formatação

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

$ Cat Marks.TXT
$ awk -v start = 1 -v end = 3 'for (i = start; i i<=end;i++) printf("%s%s",
$ i, (i == final) ? "\ n": ofs) 'marcas.TXT

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

Exemplo 5: Imprima o intervalo de colunas de um arquivo usando uma instrução condicional

O seguinte comando 'awk' imprimirá as primeiras e as últimas colunas de um arquivo usando um loop para loop e um IF. Aqui, o loop for 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 se. 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 a impressão da última coluna.

$ Cat Marks.TXT
$ awk -v start = 2 -v end = 3 'for (i = 1; i i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("%s%s", $ i, (eu!= Nf) ? OFS: Ors) 'Marcas.TXT

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

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

O seguinte comando 'awk' imprimirá as primeiras e as últimas colunas do arquivo usando uma variável NF. Nenhuma loops ou declarações condicionais é usada 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.

$ Cat Marks.TXT
$ awk 'print $ (nf-3) "" $ nf' marcas.TXT

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

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

A função Index () retorna uma posição se o segundo valor de argumento existir no primeiro valor de argumento. A função substr () pode levar 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 comando a seguir. Como a coluna começa a partir de US $ 1 no comando 'awk', a função Index () retornará US $ 3 e o comando imprimirá de US $ 3 para US $ 4.

$ Cat Marks.TXT
$ AWK 'Print Substr ($ 0, índice ($ 0, $ 3))' Marcas.TXT

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

Exemplo 8: Imprima sequencialmente uma variedade de colunas de um arquivo usando printf

O comando 'Awk' a seguir imprimirá as primeiras, segundo e terceiras colunas de marcas.txt ao definir espaço suficiente para 10 caracteres.

$ Cat Marks.TXT
$ awk '// printf " %10s %10s %10s \ n", $ 1, $ 3, $ 2' Marcas.TXT

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

Conclusão

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