Se os arquivos estiverem classificados, você pode usar join
do coreutils:
join -o '2.2 1.2' file1 file2
Saída:
aligator 23
panda 52
bear 36
shark 25
Eu não sei qual comando devo usar no unix.
Digamos que eu tenha um arquivo como este:
A 23
B 52
C 36
F 25
e segundo arquivo com 3 colunas:
A aligator 2
B panda 3
C bear 4
D pig 1
E yeti 0
F shark 9
G dog 10
H cat 1
Agora eu gostaria de substituir os valores da primeira coluna (em 1 arquivo) usando os valores da segunda coluna (2 arquivos) se os valores das primeiras colunas corresponderem entre os arquivos
exemplo de saída:
aligator 23
panda 52
bear 36
shark 25
Alguém pode me ajudar?
melhor.
Se os arquivos estiverem classificados, você pode usar join
do coreutils:
join -o '2.2 1.2' file1 file2
Saída:
aligator 23
panda 52
bear 36
shark 25
O awk
é uma boa ferramenta para este trabalho:
awk 'NR==FNR{a[$1]=$2;next}a[$1]{print $2,a[$1]}' file1 file2
Quando o primeiro arquivo estiver sendo lido ( FN==FNR
), preencha a matriz a
com valores da segunda coluna e indexados da primeira coluna. Então, quando o segundo arquivo for processado, imprima sua segunda coluna e segunda coluna do arquivo1.
Saída:
aligator 23
panda 52
bear 36
shark 25
Tags text-processing awk columns