Se tudo o que você está tentando fazer é "compactar" dois arquivos juntos, use o comando paste
paste -d ' ' file01 file02
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).
Como sugerido por @ 1-cr O comando paste
é a melhor maneira de fazer isso. Aqui estão algumas outras opções para completar:
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
.
Perl
perl -ne 'BEGIN{open($fh,"file02");@a=<$fh>}
chomp; print "$_ $a[$.-1]"' file01
awk
/ gawk
gawk 'BEGIN{f=ARGV[1]}
{
if(FILENAME==f){a[FNR]=$0}
else{print a[FNR],$0}
}' file01 file02