یکی از ابزارهای اصلی ویرایش متن در لینوکس، دستور sed است؛ یک ویرایشگر جریان داده که بدون رابط گرافیکی کار میکند و مستقیماً از خط فرمان عملیات را انجام میدهد. از اصلاحات سریع تا تغییرات پیچیده متن، در اینجا ۹ روش برای استفاده از دستور sed برای ویرایش آسانتر متن آورده شده است:
۱. جستجو و جایگزینی متن (ساده و هدفمند)
جایگزینی متن رایجترین کاربرد sed است. وقتی با فایلهای بزرگ در ترمینال کار میکنم، ترجیح میدهم از sed استفاده کنم تا نیازی به باز کردن ویرایشگر نباشد. دستور پایه برای جایگزینی به شکل زیر است:
sed 's/old/new/' file.txt
در اینجا s به معنی substitute (جایگزین کردن)، old متن قدیمی و new متن جدید است.
برای جایگزینی همه موارد در هر خط، از علامت g استفاده کنید:
sed 's/old/new/g' file.txt
همچنین میتوانید جایگزینی را فقط در خط خاصی انجام دهید:
sed '10s/old/new/' file.txt
یا در محدودهای از خطوط:
sed '10,20s/old/new/' file.txt
و حتی میتوانید متن را فقط در خطوطی که با یک الگو مطابقت دارند جایگزین کنید:
sed '/ERROR/s/old/new/g' file.txt
۲. درج، اضافه کردن و حذف محتوا
سه کار رایج با فایلها: درج، اضافه کردن و حذف محتوا. با sed همه اینها به راحتی انجام میشوند:
- درج قبل از خط مشخص:
sed '3i\
# New setting\
ENABLE_FEATURE=true' config.conf
- اضافه کردن بعد از خط مشخص:
sed '3a\
Added text' file.txt
- جایگزینی کامل یک خط:
sed '/^version=/c\version=2.0.0' config.conf
- حذف یک خط:
sed '3d' file.txt
- حذف محدودهای از خطوط:
sed '5,10d' file.txt
- حذف خطوط مطابق یک الگو:
sed '/DEBUG/d' logfile.txt
۳. نمایش و استخراج محتوا
به طور پیشفرض sed هر خط را چاپ میکند. برای کنترل، از گزینه -n استفاده کنید و همراه با p نمایش دهید:
sed -n '5p' file.txt # چاپ خط پنجم
sed -n '15,20p' file.txt # چاپ خطوط ۱۵ تا ۲۰
sed -n '/ERROR/p' file.txt # چاپ خطوط حاوی ERROR
برای استخراج متن بین دو الگو:
sed -n '/START/,/END/p' file.txt
یا برای چاپ همه خطوط به جز الگوی خاص:
sed -n '/ERROR/!p' logfile.txt
۴. ویرایش فایل در محل با گزینه پشتیبان
با گزینه -i میتوانید فایل را مستقیم ویرایش کنید:
sed -i 's/old/new/g' file.txt
برای ایجاد نسخه پشتیبان:
sed -i.bak 's/old/new/g' file.txt
میتوانید پسوند سفارشی یا تاریخگذاری شده هم انتخاب کنید:
sed -i.$(date +%Y%m%d) 's/foo/bar/g' config.conf
۵. اعمال چند تغییر همزمان
برای اعمال چند تغییر در یک مرحله:
sed -i -e 's/apple/orange/g' -e 's/pear/grape/g' file.txt
یا دستورات چندگانه را با ; جدا کنید:
sed 's/red/blue/g; s/apple/orange/g; /draft/d' data.txt
۶. خودکارسازی ویرایشها با اسکریپت
میتوانید دستورات sed را در یک فایل اسکریپت ذخیره کنید:
# edits.sed
s/apple/orange/g
s/pear/grape/g
/^#/d
و سپس اجرا کنید:
sed -i -f edits.sed file.txt
۷. ویرایش با عبارات منظم (Regex)
عبارات منظم الگوهای پیچیده را هدف میگیرند. نمونهها:
sed -E 's/^([A-Za-z]+)[[:space:]]+([A-Za-z]+)$/\2, \1/' names.txt
sed -E 's/\b([0-9])\b/0\1/g' numbers.txt
sed -E 's/[[:space:]]+$//' file.txt
۸. پاکسازی و قالببندی فایلها
حذف کاراکترهای اضافی یا اصلاح تبها و فضاهای اضافی:
sed -i 's/\r$//' file.txt # حذف CR
sed -E 's/\t/ /g' file.txt # تبدیل تب به فاصله
sed -E '/^[[:space:]]*$/d' file.txt
sed -E 's/[[:space:]]+$//' file.txt
sed -E 's/[[:space:]]+/ /g' file.txt
۹. ترکیب با دستورات دیگر
sed با دستورات Bash دیگر ترکیب میشود:
ps aux | sed -n '1,5p' # فقط ۵ خط اول
grep 'ERROR' logfile | sed -E 's/.*\[([0-9-: ]+)\].*/\1/p' # استخراج زمانها
از جایگزینی ساده تا تغییرات پیچیده با Regex، sed ابزار قدرتمندی برای صرفهجویی در زمان و خودکارسازی ویرایش متن است. تمرین روزانه کلید مهارت در آن است.















