جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
محتوای باز
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]
  • خانه
  • کتاب آنلاین
  • درباره سایت
  • درباره لوگو
  • تماس با ما
محتوای باز
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0
[wcas-search-form]

به‌کارگیری عبارات منظم

12 آذر 1399
ارسال شده توسط فرشید نوتاش حقیقت
خط فرمان، گنو/لینوکس
عبارات منظم

تا بدین‌جا درباره عبارات منظم بسیار صحبت شد و مثال‌های تمرینی زیادی را اجرا نمودیم. اکنون با استفاده از فرمان‌هایی که آموخنیم، قصد داریم چند مثال کاربردی را انجام دهیم.

اعتبارسنجی یک لیست تلفن با grep

در مثال درس قبل، شماره تلفنی را برای فرمت مناسب بررسی کردیم. یک سناریوی واقعی‌تر، بررسی کردن لیستی از شماره‌های تلفن است. در ادامه یک لیست ایجاد می‌کنیم. این کار را با جادوی خط فرمان انجام می‌دهیم. در این‌جا از فرمان‌هایی استفاده می‌کنیم که هنوز آن‌ها را توضیح نداده‌ایم و فقط از آن‌ها استفاده می‌کنیم و در درس‌های بعدی به شرح آن‌ها خواهیم پرداخت:

[me@linuxbox ~]$ for i in {1..10}; do echo "(${RANDOM:0:3}) ${RANDOM:0:3}-$
{RANDOM:0:4}" >> phonelist.txt; done

این فرمان، فایلی را با نام phonelist.txt ایجاد می‌کند که حاوی 10 شماره تلفن است. هر زمان که این فرمان تکرار شود، 10 شماره دیگر به لیست اضافه می‌شود. همچنین می‌توانیم مقدار 10 را تغییر دهیم تا تعداد کمتر یا بیشتری شماره ایجاد کنیم.

مثال زیر گویای این مطلب است:

[me@linuxbox ~]$ cat phonelist.txt
(232) 298-2265
(624) 381-1078
(540) 126-1980
(874) 163-2885
(286) 254-2860
(292) 108-518
(129) 44-1379
(458) 273-1642
(686) 299-8268
(198) 307-2440

یافتن نام‌های بدترکیب فایل با کمک فرمان find

فرمان find از یک تست خاص، بر مبنای عبارات منظم پشتیبانی می‌کند. به‌هنگام استفاده از find به‌جای grep در عبارات منظم، موضوعی مهم را بایستی در نظر بگیرید.

این‌که grep خطی را که حاوی با عبارت منظم مورد مطابقت داده شده را چاپ می‌کند؛ اما در find بایستی نام مسیر، دقیقا با عبارت منظم مطابقت پیدا کند.

در مثال زیر از find به‌همراه یک عبارت منظم استفاده می‌کنیم تا هر نام مسری که حاوی کاراکتری از اعضای زیر نیست را پیدا کنیم:

[-_./0-9a-zA-Z]

چنین جستجویی نام‌های مسیر را که حاوی فضاهای نهفته و کاراکترهای محتمل دیگری است را آشکار می‌سازد:

[me@linuxbox ~]$ find . -regex '.*[^-_./0-9a-zA-Z].*'

برای اجرای یک مطابقت دقیق یک نام مسیر (به‌صورت کامل)، از .* در پایان هر عبارت استفاده کردیم تا هیچ یا چند نمونه از هر کاراکتری را تطبیق دهد. در میان عبارت از یک عبارت براکتی نفی شده حاوی مجموعه‌ای از کاراکترهای نام مسیر قابل قبول استفاده می‌کنیم.

جستجو برای فایل‌ها با استفاده از locate

فرمان locate هر دو نوع عبارات منظم پایه (گزینه –regexp) و توسعه‌یافته (گزینه –regex) را پشتیبانی می‌کند. با استفاده از آن می‌توانیم بسیاری از عملیاتی که قبلا بر روی فایل‌های dirlist انجام می‌دادیم را انجام دهیم:

[me@linuxbox ~]$ locate --regex 'bin/(bz|gz|zip)'
/bin/bzcat
/bin/bzcmp
/bin/bzdiff
/bin/bzegrep
/bin/bzexe
/bin/bzfgrep
/bin/bzgrep
/bin/bzip2
/bin/bzip2recover
/bin/bzless
/bin/bzmore
/bin/gzexe
/bin/gzip
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipgrep
/usr/bin/zipinfo
/usr/bin/zipnote
/usr/bin/zipsplit

با استفاده از تناوب، جستجویی برای نام‌های مسیری که حاوی bin/bz، bin/gz و /bin/zip می‌باشند را انجام می‌دهیم.

جستجو متن با less و vim

فرمان less و vim روش جستجوی یکسانی را برای متن به‌اشتراک می‌گذارند. فشردن کلید / به‌همراه یک عبارت منظم، جستجویی را انجام خواهد داد. ما از less به‌منظور نمایش فایل phonelist.txt استفاده می‌کنیم:

[me@linuxbox ~]$ less phonelist.txt

سپس عبارت اعتبارسنجی را جستجو می‌کنیم:

(232) 298-2265
(624) 381-1078
(540) 126-1980
(874) 163-2885
(286) 254-2860
(292) 108-518
(129) 44-1379
(458) 273-1642
(686) 299-8268
(198) 307-2440
~
~
~
/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$

ملاحظه می‌کنید که less موارد مطابقت شده را highlight می‌کند.

(232) 298-2265
(624) 381-1078
(540) 126-1980
(874) 163-2885
(286) 254-2860
(292) 108-518
(129) 44-1379
(458) 273-1642
(686) 299-8268
(198) 307-2440
~
~
~
(END)

در مقابل آن vim عبارت منظم پایه را پشتیبانی کرده، در نتیجه عبارت جستجو ما به این شکل می‌باشد:

/([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}

مشاهده می‌شود که عبارت تقریبا همان است؛ هرچند که بسیاری از کاراکترهایی که در عبارات توسعه‌یافته متاکاراکتر در نظر گرفته می‌شدند در عبارات پایه لیترال در نظر گرفته می‌شوند. آن‌ها فقط زمانی به‌عنوان متاکاراکتر عمل می‌کنند که به‌وسیله بک‌اسلش نادیده گرفته شوند. بسته به پیکربندی ویژه vim بر روی سیستم ما، موارد تطبیق داده شده، highlight می‌شوند. اگر این اتفاق رخ نداد، حالت فرمان:hlsearch را به‌منظور highlight کردن جستجو، امتحان کنید.

منبع: لینوکس‌سیزن نوشته فرشید نوتاش حقیقت
برچسب ها: CLICommand Lineخط فرمانخط فرمان لینوکسمحتوای باز
درباره فرشید نوتاش حقیقت

همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرم‌افزارهای آزاد/ متن‌باز و سیستم‌عامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.

نوشته‌های بیشتر از فرشید نوتاش حقیقت
قبلی شمارش‌گرها (Quantifiers)
بعدی پردازش متن (Text Processing)

دیدگاهتان را بنویسید لغو پاسخ

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.

جستجو
جستجو برای:
دسته‌بندی موضوعی مقالات
  • برنامه‌نویسی
    • پایتون
    • دواپس
  • پایگاه‌داده
    • MariaDB
    • MySQL
  • تجارت الکترونیک
    • بازاریابی اینترنتی
    • دیجیتال مارکتینگ
    • شبکه‌های اجتماعی
  • جامعه کاربری
    • لاگ
  • دسته‌بندی نشده
  • شبکه و امنیت
  • طراحی وب
    • سئو
    • سیستم مدیریت محتوا
      • وردپرس
  • فناوری‌های نوظهور
    • اینترنت اشیاء
    • رایانش ابری
      • OpenStack
    • کلان‌داده‌ها
  • گنو/لینوکس
    • توزیع
      • CentOS
      • اوبونتو
      • دبیان
      • فدورا
    • چیست
    • خط فرمان
  • مهاجرت به آزاد/متن‌باز
  • نرم‌افزار
    • اداری
      • لیبره آفیس
        • ایمپرس
        • بیس
        • دراو
        • رایتر
        • کالک
    • کاربردی
    • گرافیک و انیمیشن
      • بلندر
      • گیمپ
نماد الکترونیکی (اینماد)
پرداخت‌یار

محتوای باز؛ مرجع آموزشی نرم‌افزارهای آزاد/ متن‌باز

از اینکه قصد همکاری با رسانه «محتوای باز» را دارید بسیار خرسندیم و این مایه مباهات ماست.

نحوه همکاری با ما چندان پیچیده نیست و شرایط آن در ادامه، ارائه گردیده است.

دستمزد مدرسین

پیش از بیان شرایط ضبط ویدئو شایان ذکر است اشاره‌ای به دستمزد مدرسین سایت داشته باشیم.

شما ممکن است در دو حالت تمایل به نشر ویدئو خود را داشته باشید: یا آن را رایگان در اختیار عموم قرار دهید و یا اینکه در قبال فروش آن از خریدار وجه مربوطه محصول را اخذ نمایید.

صرف نظر از هر حالت ممکنه، می‌بایست شرایطی که در ادامه ذکر شده‌اند را رعایت کرده باشید.

در حالت اول (رایگان) رسانه محتوای باز (Open Content)، نه وجهی از شما برای نشر ویدئو می‌گیرد و نه وجهی به شما پرداخت می‌نماید و دوره آموزشی شما را به رایگان منتشر می‌کند.

اما در حالت بعدی طریقه همکاری به روش درآمد از فروش خواهد بود، به گونه‌ای که 70 درصد از کل مبلغ فروش دوره آموزشی متعلق به مدرس دوره بوده و 30 درصد مابقی به رسانه محتوای باز تعلق می‌گیرد.

شرایط کلی ضبط دوره آموزشی

دوره آموزشی مربوطه، صرف نظر از هر محتوایی که دارد می‌بایست در یکی از توزیعات گنو/لینوکسی ضبط شده باشد. (به‌عنوان مثال دوره دروپال در اوبونتو، دوره آموزشی کار با آردوینو در دبیان و امثالهم). اگر دوره آموزشی شما در محیط ویندوز و یا هر پلتفرم/سیستم‌عامل دیگری ضبط شده باشد از همکاری با شما معذوریم.

پیشنهاد می‌گردد برای ضبط دوره آموزشی در توزیع گنو/لینوکس از ابزار قدرتمند OBS استفاده نمایید. البته این صرفا یک پیشنهاد است و شما می‌توانید از هر ابزار مناسب دیگری برای این کار بهره ببرید.

برای آشنایی یا تسلط بیشتر می‌توانید دوره رایگان آموزش OBS محمد عابدینی را ببینید:

مشاهده دوره آموزش OBS
شرایط کیفی ضبط دوره آموزشی

کیفیت صدا از اهمیت ویژه‌ای برخوردار می‌باشد و می‌بایست فاقد هر گونه نویز یا صدای اضافی دیگری (صدای محیط پیرامون) باشد.

دوره آموزشی تهیه شده صرفا باید برای رسانه محتوای باز تدوین شده باشد و در هیچ سایت مشابه دیگری قرار نگرفته باشد.

از قرار دادن موسیقی متن، در بک‌گراند دوره آموزشی شدیدا پرهیز کنید. این کار موجب حواس‌پرتی مخاطب و ضعیف شدن صدای مدرس می‌گردد.

دوره آموزشی ضبط شده می‌باید فاقد هر گونه لوگو یا آدرس سایت دیگری (در گوشه تصویر یا بک‌گراند صفحه دسکتاپ و هر جای دیگری) باشد.

در حین دوره، مدرس نباید به برند خاصی اشاره کند که جز رقبای ما به‌شمار می‌آیند.

مدرس باید در ابتدا در اواسط و در انتهای دوره به برند ما یعنی رسانه محتوای باز (Open Content) بصورت کلامی اشاره نماید.

مدرس، هنگام تدریس نباید تپق زده، سرفه یا عطسه کند یا صدای قورت دادن بزاقش شنیده شود و بایستی با صدای رسا، دوستانه و پرانرژی به تدریس بپردازد.

قبل از تدوین دوره آموزشی حتما با ما در تماس باشید و یک ویدیوی چنددقیقه‌ای (ترجیحا 5 الی 10 دقیقه)، بصورت نمونه‌کار برای ما بفرستید.

از همکاری با شما سپاسگزاریم.

فراخوان همکاری