Use paste
em vez de tr
:
$ cut -f2 temp1 | paste -s
73 74 75
verificar o espaço em branco invisível
$ cut -f2 temp1 | paste -s | od -c
0000000 7 3 \t 7 4 \t 7 5 \n
0000011
Gostaria de extrair o segundo campo e transpô-lo para se tornar uma linha
cat > temp1
1 73
2 74
3 75
Minha abordagem:
cut -f2 temp1 | tr '\n' '\t' > temp2
O resultado:
temp2
73 74 75
Compreensivelmente, há um separador de tabulação na extremidade direita da linha, mas faltando um novo caractere de linha. Existe um simples one-liner para corrigir isso?
cat file | cut -d' ' -f2 | xargs -n3
73 74 75
e para verificar o espaço em branco invisível por @glenn jackman
cat file | cut -d' ' -f4 | xargs -n3 | od -c
0000000 7 3 7 4 7 5 \n
0000011
A maneira mais simples de imprimir / emitir / dar uma nova linha é usar echo
.
Parece bastante simples adicionar uma nova linha ao arquivo criado:
cut -f2 temp1 | tr '\ n' '\ t' > temp2 echo > > temp2
O que poderia ser feito em uma linha como:
{ cut -f2 temp1 | tr '\n' '\t' ; echo ; } > temp2
Ou seja: se a guia à direita não for um problema. Se for, você precisa removê-lo ou evitar que ele seja gerado, qualquer coisa que você faça:
awk 'NR>1{printf( "%s\t",a)}{a=$2}END{print a}' temp1 >temp2
sed -n 's/[0-9]*[[:blank:]]*//;1{h;d};H;${g;y/\n/\t/;p}' temp1 >temp2
sed 's/[0-9]*[[:blank:]]*//' temp1 | paste -sd '\t' >temp2