Como mesclar 2 colunas em um arquivo como alternativa?

2

Como mesclar 2 colunas em um arquivo alternativamente? Veja o exemplo abaixo.

inputfile:

sam    jam
tommy  bond

expected_output:

sam
jam
tommy
bond
    
por ayrton_senna 10.01.2018 / 19:13

4 respostas

4

Simplesmente com awk :

awk '{ print $1 ORS $2 }' file
  • $1 e $2 - são o primeiro e o segundo campo, respectivamente
  • ORS - Separador de registro de saída. O valor inicial de ORS é a string " \n " (ou seja, um caractere de nova linha)

A saída:

sam
jam
tommy
bond
    
por 10.01.2018 / 19:15
1

Algumas alternativas:

com o awk:

$ awk '$1=$1' OFS="\n" file1
sam
jam
tommy
bond

Esta solução funciona com qualquer número de campos por linha:

$ cat file2
one two three
four five
six seven eight nine

$ awk '$1=$1' OFS="\n" file2
one
two
three
four
five
six
seven
eight
nine

OFS é o separador do campo Saída.
$1=$1 força o awk a "recalcular" cada registro ($ 0) usando o OFS

Apenas por diversão abaixo de uma alternativa sed que também funcionará para qualquer número de campos por linha:

$ sed -r 's/[ ]+/\n/g' file2
    
por 10.01.2018 / 20:42
1

Para dados em ~ / z1, este comando:

xargs -n1 < ~/z1

produz:

sam
jam
tommy
bond

Em um sistema como:

OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.9 (jessie) 
bash GNU bash 4.3.30
xargs (GNU findutils) 4.4.2

e:

OS, ker|rel, machine: SunOS, 5.11, i86pc
Distribution        : Solaris 11.3 X86
bash GNU bash 4.1.17
xargs - ( /usr/bin/xargs, 2016-04-10 )

O comando xargs recebe tokens de STDIN, até n de cada vez (1 neste caso), e fornece o token como o argumento para o comando, padronizando para echo .

Felicidades ... felicidades, drl

    
por 11.01.2018 / 02:09
0

echo 'paste -s file' | tr ' ' '\n'

ou

paste -s file | fmt -1

ou

cat file | xargs -n1

Para o seu caso especial, não é necessário incomodar esses comandos programáticos, como awk ou sed . Comandos simples como acima são suficientes.

    
por 13.01.2018 / 20:41