com grep
grep -Ff File2 File1
com awk
awk 'NR==FNR {a[$1]++;next} a[$1]' File2 File1
É possível copiar as linhas inteiras de File1
em um novo File3
seguindo a instrução dada por File2
usando um script bash simples usando sed
ou awk
?
File1: /*two or more columns*/
AC 456324
DC 689712
GH 123677
KL 236587
File2: /*one column*/
AC
DC
File3:
AC 456324
DC 689712
Na verdade, estou fazendo isso usando dicionários Python e me perguntei se você conhecia uma saída simples.
Você pode usar join
para combinar linhas de dois arquivos unindo-as onde uma determinada coluna possui as mesmo valor em ambos os arquivos. Observe que os arquivos de entrada precisam ser classificados pelos valores nessa coluna.
join File1 File2
Se os arquivos não estiverem classificados, no bash / ksh93 / zsh:
join <(sort File1) <(sort File2)
Aqui, o campo a ser associado é aquele que contém AC
, DC
, etc. Veja um exemplo se o campo a ser unido for a coluna 3 em File1
com a coluna 2 em File2
.
join -1 3 -2 2 <(sort -k3,3 File1) <(sort -k 2,2 File2)