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

How Print Range Columns Using Awk Command



O comando `awk` é um dos muitos comandos que podem ser usados ​​para imprimir uma gama 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 -a | awk '{imprimir $ 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 marks.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 marks.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.

$gatomarks.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 a variável é 3. Essas variáveis ​​são iteradas em um loop for para imprimir os valores da coluna.

$ls -a | awk 'BEGIN {primeiro = 1; último = 3}
{para (i = primeiro; i

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 marks.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.

$gatomarks.txt
$awk -v começar=1 -v fim=3 '{para (i = início; i<=end;i++) printf('%s%s',
$ i, (i == end)? ' n': OFS)} '
marks.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` 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.

$gatomarks.txt
$awk -v começar=2 -v fim=3 '{para (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ('% s% s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

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

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

O seguinte comando `awk` 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 marks.txt. $ (NF-3) define a primeira coluna e $ NF indica a última coluna.

$gatomarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

A seguinte saída é produzida executando os comandos acima. A saída mostra a primeira e a última coluna de marks.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 comando a seguir. Como a coluna começa em $ 1 no comando `awk`, a função index () retornará $ 3 e o comando imprimirá de $ 3 a $ 4.

$gatomarks.txt
$awk '{print substr ($ 0, index ($ 0, $ 3))}'marks.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 marks.txt definindo espaço suficiente para 10 caracteres.

$gatomarks.txt
$awk '// {printf'% 10s% 10s% 10s n ', $ 1, $ 3, $ 2}'marks.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.