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

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

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


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: اسکریپت نویسی با لینوکس  (دفعات بازدید: 7215 بار)

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

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #15 : 28 اردیبهشت 1391، 07:59 ب‌ظ »
نشانک | رو بهش میگن لوله کشی . برون ده فرمان چپ رو به عنوان ورودی فرمان سمت راست لوله کشی میکنه . حالا ببین به اخرین فرمان grep چی رو به عنوان ورودی دادی
درست میگید حق با شماست شرمنده من حالا وب آدرس رو جداگانه نوشتم چون ایمیل آدرس کار میکرد و هرچی اینو دستکاری میکنم بازم کار نمیکنه ولی در حالی که با RegexBuddy کار میکنه حسابی گیج شدم لطفا راهنماییم کنید
#!/bin/sh
cat $1 | tr ' ' '\n' | grep -E -o '(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?'
با سلام و درود
لطفا کمکم کنید وقت زیادی برام باقی نمونده فقط باید وب آدرس رو درست کنم
فایل اسکریپت رو ایجاد کردم و اونو داخل پوشه usr/bin ریختم و فایل man رو توی مسیر usr/share/man/man1 ریختم و تست هم کردم که درست کار کرد فقط مشکل من اینجا نمایش وب آدرس ها بهمراه ایمیل هست لطفا کمکم کنید
یه دنیا ممنون

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #16 : 28 اردیبهشت 1391، 08:07 ب‌ظ »
خوب یک بار نشانی های وب را بگیرید
یکبار هم نشانی های رایانامه ( ایمیل ) را
یک نمونه از پرونده که رویش کار میکنید به پیوست بگذارید

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #17 : 28 اردیبهشت 1391، 08:47 ب‌ظ »
یک نمونه از پرونده که رویش کار میکنید به پیوست بگذارید
با سلام و درود
این فایل اسکریپتی هست که من ساختم
http://s3.picofile.com/file/7384147204/myscript.html

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #18 : 28 اردیبهشت 1391، 09:26 ب‌ظ »
یک نمونه هم از فایل ورودی بگذار . فایلی که میخواد خوانده و پرداخته بشه

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #19 : 28 اردیبهشت 1391، 10:26 ب‌ظ »
یک نمونه هم از فایل ورودی بگذار . فایلی که میخواد خوانده و پرداخته بشه
با سلام و درود
این کل پروژه من هست که داشتم بگفته آقای prp-e بصورت Make ایجاد میکردم که موفق نشدم
http://s3.picofile.com/file/7384163545/mmst_tar.gz.html

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #20 : 29 اردیبهشت 1391، 01:39 ق‌ظ »
الگوی یافتن نشانی های وب :
^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~])*$نمونه اسکریپت :
#!/bin/sh
echo  "E-MAIL addresses in $1 : " ;
cat $1 | tr ' ' '\n' | grep -o  -E '[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})' ;
echo  "HTTP addresses in $1 : " ;
cat $1 | tr ' ' '\n' | grep -o -E  '^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~])*$' ;
exit 0 ;


نمونه پرونده آزمایش :
http://www.goohjkgle.com
doomhammer65hjkjhir@gmail.com
https://fihjkhikleserve.net
abbasi65ir@yhjkjhkahoo.com

نمونه آزمایش :
E-MAIL addresses in testfile :
doomhammer65hjkjhir@gmail.com
abbasi65ir@yhjkjhkahoo.com
HTTP addresses in testfile :
http://www.goohjkgle.com
https://fihjkhikleserve.net
« آخرین ویرایش: 29 اردیبهشت 1391، 01:41 ق‌ظ توسط doomhammer65ir »

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #21 : 30 اردیبهشت 1391، 07:43 ب‌ظ »
با سلام و درود
اول از همه تشکر فراوان از دوستان مخصوصا آقای doomhammer65ir که خیلی کمک کردن و تقریبا تا 90 درصد تکمیل شد
اما یه قسمت هایی از کد هست خوب کار نمیکنه مثلا من یه فایل متنی دارم که اطلاعات زیر رو داخلش دارم
Amir.rezaii@gmail.com
http://www.google.com http://www.yahoo.com
http://www.google.
http://www
پس از اجرای اسکریپت چیزی که برای من پیدا می کنه به اینصورته
E-MAIL addresses in input_test :
min.solhizadeh@gmail.com
HTTP addresses in input_test :
http://www.google.com
http://www.yahoo.com
http://www.google.
برای ایمیل که مشکلش با اضافه کردن حروف بزرگ به دستور یا استفاده از آپشن -i مشکلش حل میشه
cat $1 | tr ' ' '\n' | grep -o -i  -E '[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})' ;و برای وب آدرس هم با تغییر کد به شکل زیر اون مشکلاتش هم حل میشه
cat $1 | tr ' ' '\n' | grep -o -i -E  '^(http|https)://[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)+([a-zA-Z0-9\-\.,@?^=%&:/~\+#]*[a-zA-Z0-9\-\@?^=%&/~\+#])?$' ;که در نهایت بشکل زیر در میاد
E-MAIL addresses in input_test :
Amir.rezaii@gmail.com
HTTP addresses in input_test :
http://www.google.com
http://www.yahoo.com


آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #22 : 31 اردیبهشت 1391، 07:43 ب‌ظ »
خوب با سلام و درودی دوباره
روش ایجاد فایل make رو می خوام براتون در چند خط بزارم
ما الان کلا 2 فایل اصلی داریم یکی کخ خود اسکریپت رو داخلش نوشتیم و دیگری هم man برنامه هست هر دو رو با هم کپی میکنیم و تو یه پوشه که جدید ایجاد میکنیم میریزیم اسمش اصلا مهم نیست حالا یه فایل متنی دیگه ایجاد میکنیم به اسم makefile و داخلش رو با کد زیر پر میکنیم
copy:mscript mmst.1.gz
sudo cp mscript /bin
sudo cp mmst.1.gz /usr/share/man/man1
بعد فقط با زدن دستور make فایل ها شروع به کپی شدن میکنند
موفق باشید

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #23 : 01 خرداد 1391، 02:58 ب‌ظ »
با سلام و درود
یه سوال برام پیش امده و از دوستان خواهش دارم که اگه می تونند ، کمکم کنند
در مورد کد زیر cat $1 | tr ' ' '\n' | grep -o -i -E  '^(http|https)://[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)+([a-zA-Z0-9\-\.,@?^=%&:/~\+#]*[a-zA-Z0-9\-\@?^=%&/~\+#])?$' ;این کد طوری باید باشه که مثلا داده های ما درود فایل test به اینصورت هست
<a href="http://google.com">google</a>حالا با استفاده از ساختار SED بیاد تگ a رو پیدا کند در خط بعدی بیاد از تگ a قسمت heref رو و در نهایت آدرس وب رو جدا کنه و بزاره
من یه چیزهایی در مورد SED فهمیدم ولی هرچی تلاشم کنم نتیجه نمیگیرم اگه راهنماییم کنید بتونم ایم موضوع رو پیاده کنم خیلی ممنون میشم

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #24 : 01 خرداد 1391، 03:46 ب‌ظ »
میخواهید تارتن ( عنکبوت ) بسازید سورس برگه ها را پیمایش کند نشانی های ایمیل را در بیاورد ؟
اگر این را میخواهید کار خوبی نیست . آن اصطلاح مزخرف ایمیل مارکتینگ هم بهتر است بگوییم ایمیل مزاحمینگ
================
اگر برای کار دیگری میخواهید :
<a href="http://google.com">google</a>میخواهید http://google.com را بیرون بکشید ؟

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #25 : 01 خرداد 1391، 06:23 ب‌ظ »
میخواهید تارتن ( عنکبوت ) بسازید سورس برگه ها را پیمایش کند نشانی های ایمیل را در بیاورد ؟
اگر این را میخواهید کار خوبی نیست . آن اصطلاح مزخرف ایمیل مارکتینگ هم بهتر است بگوییم ایمیل مزاحمینگ
================
اگر برای کار دیگری میخواهید :
<a href="http://google.com">google</a>میخواهید http://google.com را بیرون بکشید ؟
با سلام و درود
هدف فقط شناخت و یادگیری از ساختار sed و استفاده اون در برنامه های بعدی هست که در اینجا من می خوام فقط Web Adress ها رو توی سه مرحله استخراج کنه که 2 مرحل با Sed و یه مرحله grep
در مرحله اول با sed تگ a رو شناسایی کنه ولی چیزی نشون نده مثلا
<a href="http://google.com">google</a>در مرحله دوم با sed با کمک مرحله اول قسمت مربوط به href رو ، مثلا
href="http://google.com"و در مرحله آخر با grep و با استفاده از مرحله دوم وب آدرس رو نشون بده، مثلا
http://google.com

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #26 : 01 خرداد 1391، 07:53 ب‌ظ »
 الگوی زیر را در هر خط بیابید :
<a ....>...</a>
/<a.*?<\/a>/
برای آسانی کار از grep بهره برید :

cat FOLAN | grep -o -P '<a.*?</a>'سپس برون ده را برای الگوی زیر بپیمایید :
/".*?"/
« آخرین ویرایش: 01 خرداد 1391، 07:55 ب‌ظ توسط doomhammer65ir »

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #27 : 05 خرداد 1391، 07:55 ق‌ظ »
با سلام و درود
شرمنده بخاطر مشکلی که پیش امد مجبور به سفر اجباری شدم
برای آسانی کار از grep بهره برید :
cat FOLAN | grep -o -P '<a.*?</a>'
در مورد پیدا کردن تگ a و فرمان href باید در دو مرحله یا حداقل یک مرحله از دستور sed استفاده کنیم و grep رو برای زمانی که بخوایم لینک رو خارج کنیم استفاده کنیم

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #28 : 05 خرداد 1391، 04:11 ب‌ظ »
http://www.linuxquestions.org/questions/programming-9/printing-pattern-match-and-not-whole-line-that-matches-pattern-299122/

آفلاین mohenmir

  • Newbie
  • *
  • ارسال: 15
  • جنسیت : پسر
پاسخ : اسکریپت نویسی با لینوکس
« پاسخ #29 : 05 خرداد 1391، 07:54 ب‌ظ »
با سلام و درود و تشکر فراوان
کدی که تونستم در بیارم به این شکل شد
cat $1 | grep -o -i -P '<a.*?</a>' | sed 's/.*HREF="\(.*\)".*/\1/' | grep -o -i -E  '^(http|https)://[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)+([a-zA-Z0-9\-\.,@?^=%&:/~\+#]*[a-zA-Z0-9\-\@?^=%&/~\+#])?$' ;فایل ورودی
<a HREF="http://www.mohsen.ir">xdpyinfo(0)</a>
<a HREF="/mohsen.ac.com">xdpyinfo(1)</a>
<a HREF="http://mohsen.com">xdpyinfo(2)</a>
<a HREF="www./mohsen.org">xdpyinfo(3)</a>
فایل خروجی
HTTP addresses in input_test :
http://www.mohsen.ir
http://mohsen.com
اگه میشد کد زیر رو هم بوسیله sed بدستش آورد خیلی عالی میشد
grep -o -i -P '<a.*?</a>'و 2 تا سوال آپشن P- تو grep و آپشن 1\ تو sed چیکار میکنه؟
ممنون میشم پاسخ بدین