如何用文件(魔术)读取数字?

如何用文件(魔术)读取数字?

我想用“文件绘图”来编写绘图的格式

文件开头如下:

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 ]

参考:

相关内容