Uma solução de duas partes usando Perl e grep:
perl -pe 's/^>C \d+$/awk -v RS='>C ' '{printf "perl -pe 's/^>C \d+$/awk -v RS='>C ' '{printf "%pre%>C %s", $0}' foo | grep -zFf ba
$&/' file1 | grep -zFf file2
>C %s", $0}' foo | grep -zFf ba
$&/' file1 | grep -zFf file2
- Como
>C <some number>separa os grupos, eu correspondi e insiro um caractere nulo ASCII () à frente de cada grupo.grep - Então, posso aproveitar a capacidade de
-zde lidar com linhas delimitadas por NUL (-f file2), durante a leitura de padrões de um arquivo (>C).
Com o awk, eu faria algo semelhante, usando %code% como separador de registro e imprimindo um NUL antes de cada registro:
%pre%