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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: درخواست اسکریپت برای جدا کردن قسمتی از یک فایل متنی (حل گشته)  (دفعات بازدید: 1528 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Matrix.1372

  • High Hero Member
  • *
  • ارسال: 1966
  • جنسیت : پسر
  • Ma3x
    • Ma3x
سلام دوستان.
من یک فایل 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، 06:33 ب‌ظ توسط Matrix.1372 »

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
خب صادق جان با همین bash میتونی چیز ایده آلی درست کنی.

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

آفلاین سید مسعود امامیان

  • Hero Member
  • *
  • ارسال: 951
در مورد سوال اولی تست کن ببینید جواب مناسب هست یا نه ! :

egrep -i "\<(((http://)|(https://))(www)?(\.)?[^ ]*\.php)\>"
به عمل کار برآید     به سخندانی نیست . . .

آفلاین Matrix.1372

  • High Hero Member
  • *
  • ارسال: 1966
  • جنسیت : پسر
  • Ma3x
    • Ma3x
در مورد سوال اولی تست کن ببینید جواب مناسب هست یا نه ! :

egrep -i "\<(((http://)|(https://))(www)?(\.)?[^ ]*\.php)\>"
++
بسیار ممنونم از این‌که زحمت کشیدین.
خیلی لطف کردین.
کد به درستی کار می‌کنه، فقط یه مشکلی داشت اونم این‌که خود تگ‌های <loc> و </loc> هم توی خروجی بود، که اونم با ادیتور طی دو حرکت درست کردم! ;)
بازم ممنون، لطف کردی.
فقط میمونه اون بخش انتخاب تصادفی.

آفلاین سید مسعود امامیان

  • Hero Member
  • *
  • ارسال: 951
ببین مناسب هست یا نه ؟ :
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

  • High Hero Member
  • *
  • ارسال: 1966
  • جنسیت : پسر
  • Ma3x
    • Ma3x
ببین مناسب هست یا نه ؟ :
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) رو تغییر بدی .
++
وااای سید جان نمی‌دونم با چه زبونی ازت تشکر کنم.
واقعا لطف کردی.
خدا علمت رو زیاد کنه، سواد ما را نیز...