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
-z
de 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%