Assumindo bash e assumindo que ambos os arquivos estão classificados:
join -a1 <(sed 's/./& /6' input.txt) mapping.txt | sed 's/ //g; s/|$/|B00\/0000/'
Saída:
100180011|225|L08/2015
100180011|226|L08/2015
100181111|201|B00/0000
100181111|202|B00/0000
103823004|011|A06/2012
103823004|011|J02/2012
103823004|011|J03/2012
103823004|012|A06/2012
103823004|012|J02/2012
103823004|012|J03/2012
Não há awk à vista, desculpe. :)
Editar: explicação:
-
sed 's/./& /6'- adiciona um espaço após o sexto caractere em cada linha, então a saída é100180 011|225|L08/2015 -
join -a1une os arquivos na primeira coluna;-a1informajoinpara deixar as linhas inalteradas inalteradas do primeiro arquivo -
sed 's/ //g;'- remove os espaços no resultado - ...
's/|$/|B00\/0000/'- adiciona/|B00/0000às linhas que terminam com|, ou seja, às linhas não correspondentes do primeiro arquivo.