Adiciona uma string de sufixo ao final de cada linha? [duplicado]

2

Eu tenho dois arquivos:

file01:

line1
line2
line3

arquivo02:

A
B
C

E eu quero pegar

line1 A
line2 B
line3 C

Eu poderia escrever um script Perl, mas é melhor se não precisar.

Eu tentei usar o óbvio grep -o '^' file02 > > file01

Mas isso produz

line1
line2
line3
A
B
C

Deve ser uma coisa simples, mas não foi encontrado no "man grep" (manual para grep).

    
por Stenemo 26.06.2013 / 17:13

2 respostas

9

Se tudo o que você está tentando fazer é "compactar" dois arquivos juntos, use o comando paste

 paste -d ' ' file01 file02
    
por 26.06.2013 / 17:22
4

Como sugerido por @ 1-cr O comando paste é a melhor maneira de fazer isso. Aqui estão algumas outras opções para completar:

  1. Bash e descritores de arquivo (adaptado de aqui ):

    exec 3<file02
    while read foo; do
     read -u3 bar;
     echo $foo $bar;
    done < file01
    exec 3>&-
    

    Aqui, estou criando um descritor de arquivo chamado 3 que lê file02 . Em seguida, uso a opção read -u para ler a variável bar do descritor de arquivo 3 . Finalmente, um loop while normal lê foo de file01 .

  2. Perl

    perl -ne 'BEGIN{open($fh,"file02");@a=<$fh>} 
        chomp; print "$_ $a[$.-1]"' file01
    
  3. awk / gawk

    gawk 'BEGIN{f=ARGV[1]}
         {
          if(FILENAME==f){a[FNR]=$0}
          else{print a[FNR],$0}
         }' file01 file02
    
por 26.06.2013 / 17:51