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)