انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Matrix.1372 در 27 اسفند 1391، 03:03 ب‌ظ

عنوان: درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی (حل گشته)
ارسال شده توسط: Matrix.1372 در 27 اسفند 1391، 03:03 ب‌ظ
سلام دوستان.
من یک فایل xml دارم که توش همچین چیزی قرار داره:
<url>
    <loc>http://axgir.com/displayimage.php?pos=-3929</loc>
    <image:image>
      <image:loc>http://axgir.com/albums/main/2001 to 3000/buildings-2032.jpg</image:loc>
      <image:title>buildings</image:title>
    </image:image>
    <lastmod>2013-03-11T08:30:46+03:30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
تا الان ۶۰۰۰ تا از این تگ url هست و روزبه‌روز داره بیشتر میشه.
حالا من یه اسکریپتی می‌خوام که فقط محتوای بین تگ loc رو درآره (در واقع لینک یه صفحه وب هست)، مثلا این:
<loc>http://axgir.com/displayimage.php?pos=-3929</loc>و خروجی رو توی یک فایل txt بذاره مثلا اینطوری:
http://axgir.com/displayimage.php?pos=-3929
http://axgir.com/displayimage.php?pos=-3932
http://axgir.com/displayimage.php?pos=-3934
http://axgir.com/displayimage.php?pos=-3937
بعد یه اسکریپت دیگه می‌خوام که این فایل خروجی رو بگیره و به‌صورت تصادفی از این لیست دسته‌های ۲۰ تایی از لینک‌ها درست کنه.
این فایل xml هست برای اطلاعات بیشتر:
http://axgir.com/sitemaps/cat2-sitemap.xml
خب حالا من با چی می‌تونم این اسکریپت رو بسازم؟
می‌دونم جسارته ولی کسی می‌تونه این اسکریپت رو لطف کنه و بنویسه؟  [-o<
اگرم نه لطفا راهنمایی کنید.
با تشکر
عنوان: پاسخ : درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی
ارسال شده توسط: محمدرضا ح. در 27 اسفند 1391، 03:35 ب‌ظ
خب صادق جان با همین bash میتونی چیز ایده آلی درست کنی.

نمونش هم توی بعضی سایتها هست. فقط اگر اشتباه نکنم باید یه طوری خروجی دستوراتی مثل cut و grep رو به هم لوله کشی کنی و در آخر نتیجه رو توی فایل تکست قرار بدی. توی جزوه LPI-101 دانشگاه شریف بود. کدش رو پیدا میکنم برات قرار میدم (البته اگه کسی پیش دستی نکنه تا موقعی که من اسکریپت رو پیدا میکنم ;) ) .
عنوان: پاسخ : درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی
ارسال شده توسط: سید مسعود امامیان در 27 اسفند 1391، 03:44 ب‌ظ
در مورد سوال اولی تست کن ببینید جواب مناسب هست یا نه ! :

egrep -i "\<(((http://)|(https://))(www)?(\.)?[^ ]*\.php)\>"
عنوان: پاسخ : درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی
ارسال شده توسط: Matrix.1372 در 27 اسفند 1391، 03:49 ب‌ظ
در مورد سوال اولی تست کن ببینید جواب مناسب هست یا نه ! :

egrep -i "\<(((http://)|(https://))(www)?(\.)?[^ ]*\.php)\>"
++
بسیار ممنونم از این‌که زحمت کشیدین.
خیلی لطف کردین.
کد به درستی کار می‌کنه، فقط یه مشکلی داشت اونم این‌که خود تگ‌های <loc> و </loc> هم توی خروجی بود، که اونم با ادیتور طی دو حرکت درست کردم! ;)
بازم ممنون، لطف کردی.
فقط میمونه اون بخش انتخاب تصادفی.
عنوان: پاسخ : درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی
ارسال شده توسط: سید مسعود امامیان در 27 اسفند 1391، 04:14 ب‌ظ
ببین مناسب هست یا نه ؟ :
x=1
while [ $x -le 10 ];
do
echo "|------------|" >> /home/Yourname/Desktop/endresult
shuf -n 20 /home/Yourname/Desktop/test >> /home/Yourname/Desktop/endresult
echo "|------------|" >> /home/Yourname/Desktop/endresult
x=$(( $x + 1 ))
done

تعداد تکرار رو می تونی در شرط حلقه (عدد 10) رو تغییر بدی .
عنوان: پاسخ : درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی
ارسال شده توسط: Matrix.1372 در 27 اسفند 1391، 06:32 ب‌ظ
ببین مناسب هست یا نه ؟ :
x=1
while [ $x -le 10 ];
do
echo "|------------|" >> /home/Yourname/Desktop/endresult
shuf -n 20 /home/Yourname/Desktop/test >> /home/Yourname/Desktop/endresult
echo "|------------|" >> /home/Yourname/Desktop/endresult
x=$(( $x + 1 ))
done

تعداد تکرار رو می تونی در شرط حلقه (عدد 10) رو تغییر بدی .
++
وااای سید جان نمی‌دونم با چه زبونی ازت تشکر کنم.
واقعا لطف کردی.
خدا علمت رو زیاد کنه، سواد ما را نیز...