File-Command

如何讀取帶有文件的數字(魔術)?

  • July 26, 2016

我想用“文件繪圖”寫一個繪圖的格式

文件開頭如下:

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 $$

中的正則表達式man magic沒有詳細說明。但是看看 JigglyNaga 的這個絕妙答案

首先,您需要在魔法文件中的正則表達式中轉義幾個字元:^+空格是範例。以下是使您的魔術文件適用於您描述的文件的兩種方法:

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]

更好的方法(以我的拙見)是在VersionUnits字元串中保留空格:

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 ]

參考:

引用自:https://unix.stackexchange.com/questions/298419