سلام دوست عزیز😃👋
به مسابقه «بلهکمپ ۷ - مرحله دوم (DevOps)» خوش آمدی!
نکات مفید برای شرکت در مسابقه:
chatGPT
و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکتکنندگان مسابقه حذف میشوید.موفق باشید و بهتون خوش بگذره 😉✌
سلیب فارغ از دنیا و آخرت در حال خوشگذرانی بود که ناگهان امین پیش او آمد و گفت که در پیامرسان بله خبر از گنجی به او رسیده. سلیب هم که برای مالی بادآورده جان میدهد، قبول کرد تا به دنبال گنج بگردد. برای این کار نیاز بود تا خود را با کشتی به جزیرهای برساند که در آنجا نقشهی گنج دفن شده بود.
سلیب مطمئن بود که سایتی برای خرید بلیط کشتی به ارزانترین حالت ممکن را قبلاً دیده و آن را بوکمارک کرده، اما نمیدانست که سایت را در کجای کدام مرورگر خود ذخیره کردهاست. او که به انجام ندادن کارهای خود عادت کرده، از شما خواسته تا اسکریپتی به زبان bash
برای او بنویسید تا تمامی بوکمارکهای تمامی مرورگرهای سلیب را به صورت markdown درون فایلی ذخیره کند. در ادامه به بیان جزئیات بیشتر مسئله میپردازیم.
برای دانلود پروژهی اولیه روی این لینک کلیک کنید.
در لپتاپ شخصی سلیب مرورگرهای chrome ،opera و operagx موجود هستند.
تمامی مرورگرها بوکمارکهای خود را در ساختاری مختص به خود درون فایل json
ذخیره میکنند. سلیب جهت آسانتر کردن کار شما، آدرس فایلهای مربوط به هر مرورگر را در فایلی با نام addresses.txt
در کنار اسکریپت شما ذخیره کردهاست. نمونه محتوای این فایل به شکل زیر است:
توجه داشته باشید ممکن است در آدرس کاراکترهای اسپیس ()، نقطه (
.
) و تیلدا (~
) موجود باشد، همچنین ترتیب مرورگرها درون فایل همواره ثابت نیست ولی همواره تمامی مرورگرها درون فایل موجود هستند.
اسکریپت شما باید آدرس و تایتل تمامی سایتهای بوکمارک موجود در هر یک از این مرورگرها را بیابد و سپس موارد تکراری موجود را حذف کند و در نهایت مطابق شکل زیر، موارد را درون فایلی با نام unique_bookmarks.md
ذخیره کند.
توجه داشته باشید ممکن است تایتل یا نام آدرسها با "
شروع یا تمام شوند. نیاز است تا شما این کاراکترها را از تایتل یا نام آدرس حذف کنید؛ اما اگر "
در وسط کلمه وجود داشت شما مجاز به حذف آن نیستید. مثلاً اسکریپت شما باید تایتل """"""""I love "IRAN" so much"
را به I love "IRAN" so much
تبدیل کند. همچنین دقت کنید که ممکن است در بیین تایتل آنها |
وجود داشته باشد؛ که این مورد هم باید حذف شود. برای مثال نام جامعه برنامهنویسان ایران | Quera
در فایل opera.json
باید به جامعه برنامهنویسان ایران Quera
تبدیل شود.
به علامتهای نگارشی و بزرگی و کوچکی توجه کنید. خروجی اسکریپت شما باید دقیقاً برابر مقدار خواستهشده باشد.
راهحل خود را درون فایل script.sh
موجود در پروژه اولیه، پیادهسازی کنید.
برای حل مسئله تنها مجاز به استفاده از دستور jq
برای پارس کردن فایلهای جیسون میباشید. داکیومنتیشن این دستور در این لینک قابل مشاهده است.
برای مثال در پروژهی اولیه، نمونهای از فایل ذخیرهشدهی بوکمارک در تمامی مرورگرهای مسئله موجود است. با اجرای اسکریپت شما، باید خروجی خواستهشده مشاهده شود:
همچنین محتوای فایل unique_bookmarks.md
هم باید بهصورت زیر باشد:
نیازی نیست ترتیب جدول خروجی مشابه ترتیب جدول در صورت سؤال باشد و به هر ترتیب دلخواهی مجاز به تشکیل جدول هستید. تعداد سطرهای خروجی اسکریپت شما باید دقیقاً برابر با تعداد سطرهای جدول بالا باشد.
script.sh
وارد نمایید.script.sh
را آپلود کنید.jq
ممکن است در توزیعهای مختلف لینوکس رفتار متفاوتی از خود نشان دهد؛ در نتیجه ترجیحا برای تست اسکریپت خود از سیستمعامل اوبونتو استفاده کنید.url
یا name
را در خود ذخیره کردهاند متفاوت است و شما باید به صورت بازگشتی چک کنید تا به پراپرتی url
یا name
برسید و آنها را استخراج کنید.