فصل سوم: ویرایش متن و پردازش خط فرمان

آشنایی مقدماتی با sed و awk

sed: جایگزینی متن در جریان

sed (Stream Editor) برای جست‌وجو و جایگزینی متن، بدون باز کردن فایل در یک ویرایشگر، استفاده می‌شود. رایج‌ترین کاربرد آن جایگزینی یک الگو با الگوی دیگر است:

sed 's/DEBUG=False/DEBUG=True/' settings.py
sed -i 's/localhost/127.0.0.1/g' config.txt

فرمت s/الگوی_قدیم/الگوی_جدید/ دستور جایگزینی است؛ حرف g در انتها یعنی همه‌ی موارد در هر خط جایگزین شوند، نه فقط اولین مورد. فلگ -i یعنی تغییر مستقیماً در خود فایل ذخیره شود (بدون آن، فقط نتیجه در خروجی چاپ می‌شود و فایل اصلی تغییر نمی‌کند)؛ به همین دلیل توصیه می‌شود قبل از استفاده از -i روی فایل‌های مهم، یک نسخه‌ی پشتیبان بگیرید.

awk: پردازش داده‌ی ستونی

awk برای پردازش متن‌های ساختاریافته و ستونی (مثل فایل‌های CSV یا خروجی لاگ) بسیار قدرتمند است. به‌طور پیش‌فرض، awk هر خط را بر اساس فاصله (space) به ستون‌هایی تقسیم می‌کند که با $1, $2 و غیره قابل دسترسی‌اند:

awk '{print $1, $4}' access.log
awk -F',' '{print $2}' users.csv
df -h | awk '{print $5, $6}'

مثال اول از هر خط لاگ، ستون اول (مثلاً آی‌پی) و ستون چهارم (مثلاً زمان) را چاپ می‌کند. فلگ -F',' جداکننده‌ی ستون‌ها را به کاما تغییر می‌دهد، مناسب برای فایل‌های CSV. ترکیب grep، sed و awk با pipe، یکی از قدرتمندترین جعبه‌ابزارهای لینوکس برای پردازش سریع متن، بدون نیاز به نوشتن یک برنامه‌ی کامل، محسوب می‌شود.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.