دیروز با یک مشکل مواجه شدم. می خواستم تمام فونت های font.ir را که در حدود ۵۰ فونت هست را دریافت کنم. تنبلی من اجازه نمی داد روی تمام لینک کلیک کنم. تصمیم گرفتم تا لینک های درون صفحه را استخراج کنم و بعد همه را به صورت دسته ای دانلود کنم. خوب اولین و تنها چیزی که به ذهنم رسید استفاده از sed بود. بعد از کلی کلنجار رفتن نتیجه زیرحاصل شد.
اول صفحه سایت font.ir را ذخیره کردم و با خط زیر به نتیجه دلخواه رسیدم:
sed -n ‘s/.*\(http.*ttf\).*/\1/p’ font.html | xargs wget
مهمترین نکته توی این خط دستور، استفاده از «.» و «*» در regex بود. من همیشه استفاده از این دو را در wildcard و regex اشتباه می گرفتم. ولی با این نمونه کلا موضوع برام شفاف شد. در regex «.» به عنوان character set و «*» به عنوان modifire است (فرض را براین گرفتم که شما از سه ماده اولیه یک regex یهنی character set، modifire و anchors آگاهی دارید. در صورتی که به گوشتون نخورده به اینجا مراجعه کنید.). برای همین شما نمی تونید از «*» به تنهایی استفاده کنید و همان نتیجه مشابه در wildcard را بگیرید. حتما باید به همراه یک character set ازش استفاده کنید.
در مورد بقیه قسمت ها هم در صورتی که با sed آشنایی داشته باشید، مشکلی در فهم دستور نخواهید داشت. اگه ندارید به اینجا مراجعه کنید.
4 پاسخ
البته بسیار ممنون از راهنماییتون اما در این مورد خاص اگه سمت راست صفحه رو نگاه میکردی خود سایت همه فونتها رو توی یه فایل Zip ذخیره کرده و گذاشته برای دانلود 🙂
😀
آره متاسفانه من متوجه لینک نشدم. چرا؟ نمی دونم 😛
ولی خوب نتیجه پیدا نکردن اون لینک خوب بود 😉
یه ابزاری هست به اسم dog (فرمان cat توی لینوکس رو به خاطر بیارید) میتونه این کار رو بکنه. البته امکانات خیلی زیاد دیگه ای هم داره
dog را قبلا استفاده کرده بودم ولی یه همچین امکانی توش ندیدم. الانم که اومدم نصب کنم بسته اش توی wheezy نیست!!