وقتی پای دستور `grep` وسط میاد من ترجیح میدم زیاد به شرح نپردازم و مستقیم بریم سراغ استفاده ازش (البته همیشه وقتی نام `grep` گفته میشه باید بدونیم که الگوریتم درست درمونی مثل `Aho corasick` پشت این دستور خوابیده

پیش از همه یک فایل به نام tmp.txt بسازید و متن زیر را در آن ذخیره کنید:

100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   Manager    Sales       $6,000

اکنون برویم سراغ استفاده از `grep`.

  • چگونه اپراتور `OR (|)` را پیاده سازی کنیم؟ ``` $ grep 'pattern1\|pattern2' filename ``` برای آزمایش آن میتوانید از فایل تمپ خود استفاده کنیم. ``` $ grep 'Tech\|Sales' tmp.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000 ```
  • چگونه اپراتور `AND (.*)` را پیاده سازی کنیم؟ دستور `grep` چیزی به عنوان اپراتور `AND` ندارد ولی ما میتوانید عمل این اپراتور را شبیه سازی کنیم. ``` grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename ``` نتیجه آزمایش روی فایل ما بشکل زیر است ``` $ grep -E 'Dev.*Tech' tmp.txt 200 Jason Developer Technology $5,500 ``` روش دیگر شبیه سازی اپراتور `AND` نوشتن چند دستور پشت هم است. ``` $ grep 'pattern1' filename.txt | grep 'pattern2' ```
  • چگونه عمل `NOT` را پیاده‌سازی کنیم؟ کلیدواژه `-v` در `grep` عمل منفی سازی را انجام میدهد. ``` grep -v 'pattern1' filename ``` خروجی آزمایش روی داده‌های ما بفرم زیر است. ``` $ grep -v Sales tmp.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 ```

از `grep` جدا شویم و ببینیم چگونه میتوان تمامی کلمات را به حروف کوچک تبدیل کرد، تعداد سطرهای موجود در فایل را ببینیم و سطرهای تکراری را از یک فایل حذف کنیم

  • تبدیل کلمات به حروف کوچک ``` $ cat tmp.txt | tr '[:upper:]' '[:lower:]' ```
  • بدست آوردن تعداد سطرهای فایل ``` $ wc -l tmp.txt ```
  • حذف سطرهای تکراری (البته قبلا هم مطلبی در این زمینه داشتیم ولی گفتار مجدد گاهی بد نیست :) ``` $ uniq tmp.txt ```