Regexes em man magic
não são extensivamente detalhados. Mas dê uma olhada nesta resposta brilhante de JigglyNaga.
Para começar, você precisa escapar de vários caracteres em expressões regulares em arquivos mágicos: ^
, +
e espaços são exemplos. Aqui estão duas maneiras de fazer seu arquivo mágico funcionar para os arquivos que você descreve:
0 string CAD\n CAD-Drawing
>&0 regex \^A[0-9]\+ Format=[%s]
>>&0 search \n
>>>&0 regex \^[a-z]\+ Units=[%s]
Isso ignora os espaços e, portanto, imprime o seguinte:
$ file -m mmm file[12].cad
file1.cad: CAD-Drawing Format=[A1] Units=[mm]
file2.cad: CAD-Drawing Format=[A00] Units=[m]
Uma maneira melhor (na minha humilde opinião) é manter espaços nas strings Versão e Unidades :
0 string CAD\n CAD-Drawing
>&0 regex \^A[0-9\ ]\+ Format=[%s]
>>&0 search \n
>>>&0 regex \^[a-z\ ]\+ Units=[%s]
(Note que eu precisava escapar dos espaços, mesmo que eles estejam dentro de grupos de caracteres).
Isto imprime o seguinte:
$ file -m mmm file[12].cad
file1.cad: CAD-Drawing Format=[A1 ] Units=[mm]
file2.cad: CAD-Drawing Format=[A00] Units=[m ]
Referências: