بایگانی دسته: regex

استخراج لینک های دانلود

دیروز با یک مشکل مواجه شدم. می خواستم تمام فونت های 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 آشنایی داشته باشید، مشکلی در فهم دستور نخواهید داشت. اگه ندارید به اینجا مراجعه کنید.