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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: feeruzy در 30 شهریور 1391، 07:44 ب‌ظ

عنوان: استخراج لینک از فایل متنی
ارسال شده توسط: feeruzy در 30 شهریور 1391، 07:44 ب‌ظ
سلام. احتمالا انجمن درستی رو برای سوالم انتخاب کردم.
چطوری میشه یه لینک رو از یه متن با grep یا sed استخراج کرد بطوریکه تنها همون url و نه تمام اون خط انتقال پیدا کنه؟


<td><a href="../pdf/117-144-C612-10.pdf" target=_blank><img border=0 src="../images/pdf.jpg"></a><a href="../pdf/117-144-C612-10.pdf" target=_blank><font face=tahoma size=2>sample</a></td>
<td dir=ltr align=center><font face=tahoma style="font-size:11px;"> (274 KB)</font>
</td>


من از این دستور برای جدا کردن این قسمت از سورس html استفاده کردم و نتیجه هم بالایی هست:

grep "../pdf" 1>2

لطفا طوری دستور رو بازسازی کنید که نتیجه بشه :

../pdf/117-144-C612-10.pdf
عنوان: پاسخ : استخراج لینک از فایل متنی
ارسال شده توسط: doomhammer65ir در 30 شهریور 1391، 08:30 ب‌ظ
برای چه هدفی این کار رو انجام میدید؟
عنوان: پاسخ : استخراج لینک از فایل متنی
ارسال شده توسط: majidkamali1370 در 30 شهریور 1391، 08:50 ب‌ظ
از این regular expression میتونید استفاده کنید.
href="*"البته اینجوری لینک رو به همراه دوتا "" و کلمه href انتخاب میکنه
عنوان: پاسخ : استخراج لینک از فایل متنی
ارسال شده توسط: feeruzy در 30 شهریور 1391، 10:53 ب‌ظ
از این regular expression میتونید استفاده کنید.
href="*"البته اینجوری لینک رو به همراه دوتا "" و کلمه href انتخاب میکنه

با استفاده از این دستور تمام تگهای موجود در اون سطر به فایل جدید منتقل میشه. منظور من فقط انتقال URL هست بدون تگهای html
عنوان: پاسخ : استخراج لینک از فایل متنی
ارسال شده توسط: majidkamali1370 در 30 شهریور 1391، 11:06 ب‌ظ
شما میتونی در دو مرحله این کارو انجام بدی. در مرحله اول همین کاری که گفتم رو انجام بدی که یه فایلی بدست میاد به این صورت:
href="url1"
href="url2"
...
بعد میتونی با یه دستور دیگه فقط URL ها رو جدا کنی.
میتونی از طریق لوله گذاری (piping) خروجی دستور اول رو ورودی دستور دوم کنی یا میتونی واسه همه اینا یه script بنویسی.
عنوان: پاسخ : استخراج لینک از فایل متنی
ارسال شده توسط: Hadron در 31 شهریور 1391، 01:43 ق‌ظ
چطوری میشه یه لینک رو از یه متن با grep یا sed استخراج کرد بطوریکه تنها همون url و نه تمام اون خط انتقال پیدا کنه؟
خودت که ایده‌اش را داری (-> grep & sed)، فقط با یک آپشن "o" به چیزی که می‌خوای می‌رسی!
man grep
-o, --only-matching
Print  only  the  matched  (non-empty)  parts  of  a  matching line, with each such part on a separate output line.


آمیزش sed ،grep و sort برای داشتن یک برون‌ده‌ی پاک:
grep -o 'href="[^"]\+"' INPUT | sort -u | sed 's/href="//' | sed 's/"//' > OUTPUT