Dapatkah saya menggunakan file
dan magic
( http://linux.die.net/man/5/magic ) untuk mengganti deskripsi beberapa format lain yang dikenal?
misalnya, saya ingin menjelaskan format berikut:
- BED: http://genome.ucsc.edu/FAQ/FAQformat.html#format1
- Fasta: http://en.wikipedia.org/wiki/FASTA_format
- ...
itu adalah file teks 'hanya'
Atau
itu adalah 'hanya' file gzip yang dimulai dengan angka ajaib BAM\1
?
apakah Anda tahu contohnya?
Apakah mungkin untuk memberikan kode C khusus untuk menguji file alih-alih menggunakan format ajaib?
file-format
file-command
Pierre
sumber
sumber
Jawaban:
Anda dapat menggunakan
-m
opsi untuk menentukan daftar alternatif file ajaib, dan jika Anda memasukkan sendiri sebelum file ajaib yang dikompilasi (/usr/share/file/magic.mgc
di sistem saya) dalam daftar itu, pola-pola itu akan diuji sebelum yang "global". Anda dapat membuat fungsi, atau alias, untuk selalu menggunakan opsi itu secara transparan dengan hanya mengeluarkanfile
perintah.Bahasa yang digunakan dalam file ajaib cukup kuat, sehingga jarang ada kebutuhan untuk kembali ke pengkodean C kustom. Satu-satunya waktu saya merasa cenderung untuk melakukannya adalah di tahun 90-an ketika pencocokan file HTML dan XML sulit karena tidak ada cara (pada waktu itu) untuk memiliki casing yang fleksibel dan pencocokan offset yang diperlukan untuk dapat mengurai
<HTML
dan< Html
dan< html
dengan satu pola . Saya menerapkannya dalam C sebagai pengubah pola 'string', memungkinkan pengabaian case dan pemadatan blank (opsional) .Perubahan-perubahan dalam C ini membutuhkan adaptasi dari file ajaib juga . Dan kecuali jika
file
kode sumber telah berubah secara signifikan sejak saat itu, Anda akan selalu perlu mengubah (atau memberikan tambahan) aturan dalammagic
file yang cocok dengan perubahan kode C tersebut. Jadi Anda sebaiknya mulai mencoba melakukannya dengan perubahan pada file ajaib saja, dan kembali mengubah kode C jika itu benar-benar tidak berhasil.sumber
Untuk $ $ berikutnya (user_searchengine) pengguna menemukan ini:
Aturan sederhana seperti BAM terlihat seperti ini:
OFFSET TYPE [OPERAND]FLAG MESSAGE
Dalam kasus BAM:
0 string BAM\1 BAM
Ini akan mencetak string BAM saat menemukan header.
Untuk informasi lebih lanjut, informasi situs IBM ini tampaknya agak ketinggalan jaman, tetapi seharusnya masih cukup untuk kasus penggunaan sederhana. Pria juga memiliki banyak informasi tentang format.
sumber
Anda tidak perlu selalu menggunakan
-m
opsi; sebagai documentend di halaman manualnyafile(1)
juga akan membaca~/.magic
file secara default (atau versi yang dikompilasi:)~/.magic.mgc
, sehingga Anda dapat menambahkan definisi Anda di sana; tidak perlu dipusingkan dengan seluruh sistem/usr/share/magic*
atau/etc/magic
.sumber