Veja um script awk
que faz o que você quer:
awk '
NR==FNR { C[]=1; next }
== "C" { if (C[] == 1) { print; D[]=1 } }
== "D" { if (D[] == 1) print }
' f1 f2
Exemplo
Veja alguns dados de amostra.
$ cat f1
C 010
C 020
C 024
$ cat f2
C 005 Carbon
D Carbon 1
D Carbon 2
D Carbon 3
D Carbon 4
C 010 Hydrogen
D Hydrogen 1
D Hydrogen 2
C 017 Oxygen
D Oxygen 1
C 020 Nitrogen
D Nitrogen 1
D Nitrogen 2
D Nitrogen 3
C 024 Sulphur
D Sulphur 1
D Sulphur 2
Resultados
$ awk '
> NR==FNR { C[]=1; next }
> == "C" { if (C[] == 1) { print; D[]=1 } }
> == "D" { if (D[] == 1) print }
> ' f1 f2
C 010 Hydrogen
D Hydrogen 1
D Hydrogen 2
C 020 Nitrogen
D Nitrogen 1
D Nitrogen 2
D Nitrogen 3
C 024 Sulphur
D Sulphur 1
D Sulphur 2
Você pode colocar o script awk
em seu próprio arquivo, assim, cmd.awk
:
NR==FNR { C[]=1; next }
== "C" { if (C[] == 1) { print; D[]=1 } }
== "D" { if (D[] == 1) print }
Em seguida, execute da seguinte forma:
$ awk -f cmd.awk f1 f2
C 010 Hydrogen
D Hydrogen 1
D Hydrogen 2
C 020 Nitrogen
D Nitrogen 1
D Nitrogen 2
D Nitrogen 3
C 024 Sulphur
D Sulphur 1
D Sulphur 2