「ファイルの描画」を使って画像をフォーマットしたいと思います。
ファイルは次のように始まります。
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]
結果は...format=[A1]...または...unit=[m]です。
答え1
の正規表現はman magic
それほど詳細ではありません。しかし、これを見てください。素晴らしい答え著者: JigglyNaga。
まず、マジックファイルの正規表現から数文字をエスケープする必要があります。^
スペース+
はその例です。説明するファイルに対してマジックファイルを動作させるには、次の2つの方法があります。
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 ]
引用: