هیچ محصولی در سبد خرید وجود ندارد.

آموزش جامع کار با فایلهای متنی در لینوکس شامل مشاهده، جستجو، ویرایش، مقایسه و فیلتر دادهها با دستورات cat، grep، sed و awk.
جدول محتوا [نمایش]
لینوکس به دلیل ماهیت خط فرمانی خود، ابزارهای قدرتمندی برای مدیریت و کار با فایلهای متنی در اختیار کاربران قرار میدهد. این ابزارها برای مشاهده، ویرایش، جستجو، مقایسه و پردازش فایلهای متنی طراحی شدهاند. در این جزوه به صورت جامع، تمامی دستورات پرکاربرد و نکات مرتبط با فایلهای متنی بررسی خواهد شد.
آموزش لینوکس از مقدماتی تا پیشرفته در سایت دیزاین مشهد
cat شرح: دستور cat برای نمایش محتویات فایلها، ایجاد فایلهای جدید و ترکیب چندین فایل استفاده میشود. یکی از ویژگیهای این دستور، نمایش سریع فایلهای متنی کوتاه است.
فرمت دستور:
cat [گزینهها] [نام فایل] مثالهای کاربردی:
# نمایش یک فایل
cat file.txt
# ترکیب دو فایل و نمایش نتیجه
cat file1.txt file2.txt
# ایجاد یک فایل متنی جدید
cat > newfile.txt
Hello, this is a new file.
(Ctrl + D برای پایان ورودی)
نکته: اگر فایل بسیار بزرگ باشد، استفاده از cat باعث ایجاد شلوغی در ترمینال میشود. در این موارد از دستورات دیگری مانند less یا more استفاده کنید.
more شرح: more برای نمایش محتوای فایل به صورت صفحهبهصفحه استفاده میشود؛ زمانی مفید است که فایل طولانی باشد.
فرمت دستور:
more [نام فایل] مثالهای کاربردی:
# نمایش صفحه به صفحه
more file.txt
# شروع نمایش از خط خاص
more +5 file.txt
کلیدهای مهم:Space (صفحه بعد)، b (صفحه قبل)، q (خروج)
less شرح: less مشابه more است اما قابلیتهای بیشتری برای پیمایش دارد و امکان جستجو هم میدهد.
فرمت دستور:
less [نام فایل] مثالهای کاربردی:
# نمایش صفحهبهصفحه
less file.txt
# جستجوی یک کلمه خاص در حالت less
/ pattern
کلیدها:Space (صفحه بعد)، b (صفحه قبل)، / (جستجو)، n (مورد بعدی جستجو)، q (خروج)
grep شرح: grep ابزاری برای جستجوی الگوها (Pattern) در فایلها یا خروجی دستورات است؛ بسیار قدرتمند و انعطافپذیر.
فرمت دستور:
grep [گزینهها] "الگو" [نام فایل] مثالهای کاربردی:
# جستجوی یک کلمه در یک فایل
grep "error" log.txt
# جستجو بدون توجه به بزرگی/کوچکی حروف
grep -i "error" log.txt
# جستجوی بازگشتی در همه فایلهای یک دایرکتوری
grep -r "function" /path/to/directory
# نمایش شماره خطها
grep -n "error" log.txt
# شمارش تعداد تکرار الگو
grep -c "pattern" file.txt
گزینههای مهم:-i (Case-insensitive)، -r (بازگشتی)، -n (شماره خط)، -v (نمایش خطوط فاقد الگو)
awk شرح: awk برای پردازش و تحلیل فایلهای متنی است؛ دادهها را خطبهخط خوانده و میتواند فیلتر/محاسبه/چاپ کند.
فرمت دستور:
awk 'عملیات' [نام فایل] مثالهای کاربردی:
# نمایش ستون اول
awk '{print $1}' file.txt
# نمایش ردیفهایی که ستون دوم برابر مقدار خاصی است
awk '$2 == "value" {print $0}' file.txt
# جمع کردن اعداد ستون سوم
awk '{sum += $3} END {print sum}' file.txt
کلیدهای مهم:{print $1} (ستون اول)، END {print ...} (اجرای نهایی)، $0 (کل ردیف)
sed شرح: sed ویرایشگر جریان متنی برای ویرایش سریع و خودکار فایلها (جایگزینی/حذف).
فرمت دستور:
sed 'عملیات' [نام فایل] مثالهای کاربردی:
# جایگزینی متن در کل فایل
sed 's/old-text/new-text/g' file.txt
# حذف خطوط شامل یک الگو
sed '/pattern/d' file.txt
کلیدهای مهم:s (جایگزینی)، g (در همه موارد)، d (حذف خط)
nano شرح: nano یک ویرایشگر ساده و سبک.
فرمت دستور:
nano [نام فایل] مثالهای کاربردی:
# باز کردن فایل برای ویرایش
nano file.txt
# ایجاد فایل جدید
nano newfile.txt
میانبرها:Ctrl + O (ذخیره)، Ctrl + X (خروج)
vim شرح: vim یک ویرایشگر پیشرفته با دو حالت «ویرایش» و «دستوری».
فرمت دستور:
vim [نام فایل] مثالهای کاربردی:
# باز کردن فایل
vim file.txt
# ورود به حالت ویرایش
i
# خروج از حالت ویرایش
Esc
# ذخیره (بدون خروج)
:w
# خروج
:q
# ذخیره و خروج
:wq
# خروج بدون ذخیره
:q!
touchشرح: ایجاد فایلهای خالی یا بهروزرسانی زمان آخرین ویرایش.
فرمت دستور:
touch [نام فایل] مثالها:
# ایجاد فایل جدید
touch newfile.txt
# بهروزرسانی زمان آخرین دسترسی فایل موجود
touch existingfile.txt
echoشرح: نوشتن متن در فایل یا نمایش در خروجی ترمینال.
فرمت دستور:
echo "متن" > [نام فایل] مثالها:
# نوشتن متن در فایل (Overwrite)
echo "Hello, World!" > file.txt
# افزودن متن به انتهای فایل (Append)
echo "New line" >> file.txt
headشرح: نمایش خطوط ابتدایی (پیشفرض ۱۰ خط).
فرمت دستور:
head [گزینهها] [نام فایل] مثالها:
# ۱۰ خط اول
head file.txt
# تعداد مشخصی از خطوط
head -n 5 file.txt
tailشرح: نمایش خطوط انتهایی (پیشفرض ۱۰ خط) و قابلیت نمایش زنده.
فرمت دستور:
tail [گزینهها] [نام فایل] مثالها:
# ۱۰ خط آخر
tail file.txt
# تعداد مشخصی از خطوط آخر
tail -n 20 file.txt
# نمایش زنده (Real-time)، مناسب برای لاگها
tail -f log.txt
wcشرح: شمارش خطوط، کلمات و کاراکترها.
فرمت دستور:
wc [گزینهها] [نام فایل] مثالها:
# خطوط، کلمات و کاراکترها
wc file.txt
# فقط خطوط
wc -l file.txt
# فقط کلمات
wc -w file.txt
# فقط کاراکترها
wc -c file.txt
diffشرح: مقایسه دو فایل و نمایش تفاوتها؛ میتواند خطوط موجود در یکی و غایب در دیگری را نشان دهد.
فرمت دستور:
diff [گزینهها] [فایل1] [فایل2] مثالها:
# مقایسه دو فایل
diff file1.txt file2.txt
# مقایسه بازگشتی دو دایرکتوری
diff -r dir1/ dir2/
# ذخیره خروجی تفاوتها در یک فایل
diff file1.txt file2.txt > differences.txt
نکته: خروجی diff از علامتهای < و > برای نشاندادن خطوط موجود در فایل اول یا دوم استفاده میکند.
cmpشرح: مقایسه بیتی دو فایل و گزارش اولین تفاوت.
فرمت دستور:
cmp [فایل1] [فایل2] مثالها:
# مقایسه دو فایل
cmp file1.txt file2.txt
# نمایش اولین تفاوت از نظر بایت و خط
cmp -l file1.txt file2.txt
شرح: ارسال خروجی یک دستور بهعنوان ورودی دستور دیگر با استفاده از |.
# جستجوی یک کلمه در خروجی cat
cat file.txt | grep "error"
# شمارش خطوط شامل کلمه
grep "error" file.txt | wc -l
# فیلتر خطوط فاقد یک الگو
cat file.txt | grep -v "pattern"
# مانیتورینگ لاگ و فیلتر خطاها
tail -f /var/log/syslog | grep "error"
در سطح تخصصی، پردازش فایلهای متنی فراتر از دستورات سادهی grep و sed رفته و به مباحث عمیقتری مانند ردیابی هسته با eBPF، مدیریت لاگهای ساختاریافته و ابزارهای پیشرفتهی تحلیل متن میرسد که پاسخگوی سوالات چالشبرانگیز مطرحشده هستند.
eBPF و ردیابی سیستمی:eBPF (Extended Berkeley Packet Filter) یک فناوری انقلابی در هسته لینوکس است که امکان اجرای کدهای ایمن در فضای هسته را بدون تغییر کد آن فراهم میکند. با استفاده از ابزارهایی مانند bpftrace و BCC، میتوان بهصورت زنده رویدادهای سیستم (مانند باز شدن فایلها، فراخوانیهای سیستمی و تبادل شبکه) را ردیابی کرده و خروجیهای متنی را پردازش نمود. برای مثال، دستور زیر تعداد باز شدن فایلهای /etc/passwd را شمارش میکند:
bpftrace -e 'kprobe:do_sys_openat2 { if (str(args->filename) == "/etc/passwd") { @count = count(); } }' این قابلیتها در سوالات پیشرفتهای مانند تحلیل عملکرد با BPF و ردیابی syscallها مطرح میشوند.
مدیریت لاگهای ساختاریافته با systemd-journald و auditd: در لینوکس مدرن، لاگها دیگر صرفاً فایلهای متنی ساده نیستند. systemd-journald لاگها را بهصورت باینری و ساختاریافته ذخیره میکند که امکان جستجوی پیشرفته و فیلتر کردن بر اساس زمان، سرویس، اولویت و... را فراهم میسازد. همچنین auditd با قوانینی مانند -a always,exit -S openat -F path=/etc/shadow میتواند رویدادهای امنیتی را ثبت کند. در این سیستمها، ساختار audit_krule و audit_filter تعیین میکند که کدام رویدادها به auditd ارسال شوند.
الگوهای پیشرفته در grep، awk و sed: ترکیب این ابزارها با عبارات منظم (Regex) و حلقههای شرطی امکان پردازش دادههای حجیم را فراهم میکند. برای نمونه، استخراج آیپیهای منحصربهفرد از یک لاگفایل وبسرور با دستور زیر انجام میشود:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort | uniq -c | sort -nr همچنین awk میتواند با ساختارهای شرطی و حلقهها، گزارشهای پیچیدهای از دادههای CSV یا لاگهای سرور تولید کند.
مقایسه و تحلیل تفاوتهای فایلهای حجیم: در پروژههای نرمافزاری بزرگ، مقایسه دو نسخه از فایلهای کد یا لاگ با diff و cmp در سطح باینری اهمیت پیدا میکند. گزینههای پیشرفتهای مانند diff -u (نمایش یکپارچه) و diff -r (مقایسه بازگشتی دایرکتوریها) در سناریوهای واقعی مانند بررسی تغییرات کد منبع و تحلیل لاگهای توزیعشده کاربرد دارند.
با استفاده از cat محتویات دو فایل را به هم بچسبانید و در یک فایل جدید ذخیره کنید.
در یک فایل بزرگ با استفاده از grep به دنبال کلمه "error" بگردید و خطوطی که شامل آن نیستند را با sed حذف کنید.
با استفاده از awk ستون دوم یک فایل متنی را نمایش دهید و جمع ستون سوم را محاسبه کنید.
دو فایل متنی را با استفاده از diff مقایسه کنید و تفاوتها را در یک فایل جدید ذخیره کنید.
هدف: با استفاده از tail -f و grep، یک اسکریپت بنویسید که فایلهای log سرور را بهصورت زنده مانیتور کند و هر زمان که خطایی رخ داد، آن را در یک فایل جداگانه ثبت کند.
استفاده از tail -f برای مانیتور کردن فایل log.
فیلتر کردن خطوط شامل "error" با grep.
ذخیره خطوط خطا در یک فایل جداگانه.
این مقاله یک راهنمای جامع برای کار با فایلهای متنی در لینوکس بود. با استفاده از دستورات معرفیشده و تمرینهای پیشنهادی، میتوانید مهارتهای عملی خود را در مدیریت فایلهای متنی تقویت کنید. لینوکس ابزارهای قدرتمندی برای پردازش و مدیریت متن فراهم میکند و تسلط بر آنها پایهگذار مهارتهای پیشرفتهتر مدیریت سیستم و برنامهنویسی است. همچنین با مفاهیم پیشرفتهای مانند eBPF، مدیریت لاگهای ساختاریافته، الگوهای پیشرفته در grep/awk/sed و مقایسه فایلهای حجیم آشنا شدید که شما را برای عیبیابی و تحلیل سیستمهای پیچیده در محیطهای سازمانی و ابری آماده میکند.