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

کار با فایل‌های متنی در لینوکس
نوامبر 02, 202555 ثانیه زمان مطالعه

آموزش جامع کار با فایل‌های متنی در لینوکس شامل مشاهده، جستجو، ویرایش، مقایسه و فیلتر داده‌ها با دستورات 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

۷. ترکیب دستورات (Piping)

شرح: ارسال خروجی یک دستور به‌عنوان ورودی دستور دیگر با استفاده از |.

# جستجوی یک کلمه در خروجی 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"

۸. تمرینات و پروژه‌های عملی

۸.۱. تمرینات

  1. با استفاده از cat محتویات دو فایل را به هم بچسبانید و در یک فایل جدید ذخیره کنید.

  2. در یک فایل بزرگ با استفاده از grep به دنبال کلمه "error" بگردید و خطوطی که شامل آن نیستند را با sed حذف کنید.

  3. با استفاده از awk ستون دوم یک فایل متنی را نمایش دهید و جمع ستون سوم را محاسبه کنید.

  4. دو فایل متنی را با استفاده از diff مقایسه کنید و تفاوت‌ها را در یک فایل جدید ذخیره کنید.

۸.۲. پروژه عملی: مانیتورینگ فایل‌های log سرور

هدف: با استفاده از tail -f و grep، یک اسکریپت بنویسید که فایل‌های log سرور را به‌صورت زنده مانیتور کند و هر زمان که خطایی رخ داد، آن را در یک فایل جداگانه ثبت کند.

  1. استفاده از tail -f برای مانیتور کردن فایل log.

  2. فیلتر کردن خطوط شامل "error" با grep.

  3. ذخیره خطوط خطا در یک فایل جداگانه.

نتیجه‌گیری

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