我想用“文件绘图”来编写绘图的格式
文件开头如下:
CAD
A1
mm
(A1后空白)
或者:
CAD
A00
m
(“m”后留空)
我尝试了类似文件魔法的东西:
0 string CAD\n CAD-Drawing
>&0 regex ^A[0-9]+ Format=[%s]
>>&0 search \n
>>>&0 regex ^[a-z]+ Units=[%s]
但没有运气!有什么办法可以解决这个问题吗?我宁愿没有空白。
这不仅意味着:
0 string CAD\n CAD-Drawing
>&0 string x Format=[%s]
>>&0 string x Units=[%s]
其结果是...格式=[A1]...或...单位=[m]
答案1
中的正则表达式man magic
没有非常详细。但看看这个精彩的答案作者:JigglyNaga。
首先,您需要转义 magic 文件中正则表达式中的几个字符:^
和+
空格就是示例。以下是使您的魔法文件适用于您所描述的文件的两种方法:
0 string CAD\n CAD-Drawing
>&0 regex \^A[0-9]\+ Format=[%s]
>>&0 search \n
>>>&0 regex \^[a-z]\+ Units=[%s]
这会忽略空格,因此将打印以下内容:
$ file -m mmm file[12].cad
file1.cad: CAD-Drawing Format=[A1] Units=[mm]
file2.cad: CAD-Drawing Format=[A00] Units=[m]
一个更好的方法(以我的愚见)是在版本和单位字符串:
0 string CAD\n CAD-Drawing
>&0 regex \^A[0-9\ ]\+ Format=[%s]
>>&0 search \n
>>>&0 regex \^[a-z\ ]\+ Units=[%s]
(请注意,即使它们位于字符组内,我也需要转义空格)。
这将打印以下内容:
$ file -m mmm file[12].cad
file1.cad: CAD-Drawing Format=[A1 ] Units=[mm]
file2.cad: CAD-Drawing Format=[A00] Units=[m ]
参考: