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.