Com esses scripts awk
, sempre acho melhor dividi-los para que eu possa ver o que está acontecendo.
printf
Este é fácil. Isso é formatar a saída das colunas originais $1
e $2
para que a coluna $1
seja preenchida para ocupar 4 espaços.
Exemplo
$ cat infile | awk '
{
for(i=3;i<=NF;i++){ $2=$2" "$i }
printf "%-4s DDD\n", $1 ;
}'
1 DDD
2 DDD
DDD
5000 DDD
para loop
Este é um pouco mais complicado de detectar, mas ele está usando colunas de 3 ou mais e concatenando-as para a coluna $2
.
$ cat infile | awk '
{
for(i=3;i<=NF;i++){ $2=$2" "$i }
printf "%s | %s\n", $2,$3 ;
}'
John Smith | Smith
Bill Johnson | Johnson
|
George Heiz | Heiz
Isso é um pouco mais fácil, mas, na verdade, se adicionarmos uma quarta coluna a infile
, é mais óbvio:
$ cat infile
1 John Smith 4thcol
2 Bill Johnson 4thcol
5000 George Heiz 4thcol
Exemplo
$ cat infile | awk '
{
for(i=3;i<=NF;i++){ $2=$2" "$i }
printf "%s\t|\t%s\n", $2,$3 ;
}'
John Smith 4thcol | Smith
Bill Johnson 4thcol | Johnson
|
George Heiz 4thcol | Heiz
Se adicionarmos um 5thcol e assim por diante, eles continuarão sendo adicionados a $2
.