head and tail دو مورد از رایج ترین دستورات مورد استفاده برای دستکاری متن در لینوکس هستند. در اینجا نحوه استفاده از آنها به نفع خود آورده شده است.
دستورات و ابزارهای لینوکس زیادی برای پردازش فایل های متنی استفاده می شود. اما مواقعی وجود دارد که نمی خواهید کل محتوای یک فایل را بخوانید، بلکه می خواهید قسمت خاصی از آن را بخوانید. آیا می دانید که می توانید از دستورات head و tail در لینوکس برای خروجی ابتدا و انتهای یک فایل استفاده کنید؟
در ادامه بخوانید تا بدانید چگونه می توانید از این دو دستور برای پردازش و دستکاری موثر متن در لینوکس استفاده کنید.
فرماندهی سر چیست؟
دستور head برای پرینت قسمت های اولیه یک فایل استفاده می شود. از ابتدا فایل ها را می خواند. اگر فایلی دارید که بیش از هزار خط دارد، باز کردن و خواندن آن بسیار سخت است. با استفاده از دستور head به راحتی می توانید چند خط از بالا را چاپ کنید.
دستور دستور سر
دستور اصلی دستور head به صورت زیر است:
head[option][file]
گزینه های زیادی برای استفاده در کنار فرمان head وجود دارد که برخی از آنها بعداً مورد بحث قرار خواهند گرفت. برای دریافت راهنمایی خط فرمان در مورد فرمان head، صفحه دستی آن را با اجرای:
man head
نحوه استفاده از فرمان head
برای این مثال، یک فایل ایجاد کنید: numbers.txt. در فایل اعداد یک تا 20 را به صورت کلمه ای ذکر کنید. می توانید از هر فایلی که انتخاب می کنید استفاده کنید، اما مطمئن شوید که حداقل 11 خط داشته باشد.
با استفاده از دستور Default head
به طور پیش فرض، دستور head 10 خط اول متن را در یک فایل چاپ می کند. با اجرای این دستور در ترمینال خود آن را با فایل numbers.txt امتحان کنید:
headnumbers.txt
10 خط اول فایل را چاپ می کند:
one
two
three
four
five
six
seven
eight
nine
ten
اگر فایل کمتر از 10 خط داشته باشد، دستور head تمام خطوط موجود را چاپ می کند.
اولین N شماره خط را چاپ کنید
می توانید به جای 10 خط پیش فرض، از دستور head برای چاپ تعداد مشخصی خط استفاده کنید. برای چاپ سه خط اول فایل numbers.txt، این دستور را اجرا کنید:
head-n 3 numbers.txt
نتیجه:
one
two
three
با استفاده از دستور head، آخرین N خطوط را حذف کنید
همانطور که می توانید اولین خطوط یک متن را چاپ کنید، می توانید تصمیم بگیرید که N خط آخر را هنگام چاپ حذف کنید. می توانید این کار را با استفاده از یک عدد منفی برای پارامتر N انجام دهید.
برای حذف 15 خط آخر فایل numbers.txt، اجرا کنید:
head-n-15numbers.txt
نتیجه:
one
two
three
four
five
اولین N کاراکتر یک فایل را چاپ کنید
دستور head همچنین دارای گزینه ای برای چاپ اولین تعداد کاراکترها یا بایت ها در یک فایل است. با استفاده از گزینه -c می توانید این کار را انجام دهید. برای چاپ 10 کاراکتر اول از:
head-c 10 numbers.txt
خروجی:
one
two
th
فرمان دم چیست؟
همانطور که از نام آن پیداست، دستور tail آخرین خطوط یک فایل را چاپ می کند. فایل ها را از انتها می خواند و خطوط پایانی را خروجی می دهد.
دستور دم دستور
دستور اصلی دستور tail عبارت است از:
tail[option][file]
برای اطلاعات بیشتر در مورد فرمان دم، صفحه راهنمای آن را با صدور زیر بررسی کنید:
man tail
نحوه استفاده از فرمان دم
ما از فایل numbers.txt از قبل ایجاد شده برای مثال های زیر استفاده خواهیم کرد.
با استفاده از دستور Default tail
دستور tail 10 خط آخر یک فایل را در صورت استفاده بدون هیچ گزینه خاصی خروجی می دهد. مثلا:
tailnumbers.txt
خروجی 10 خط آخر را همانطور که ذکر شد نمایش می دهد:
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
آخرین N تعداد خط را چاپ کنید
در شرایطی که نمی خواهید 10 خط آخر را چاپ کنید، بلکه یک عدد مشخص را چاپ کنید، می توانید از گزینه -n برای رسیدن به آن استفاده کنید. برای چاپ چهار خط آخر فایل numbers.txt این دستور را اجرا کنید:
tail-n 4 numbers.txt
نتیجه:
seventeen
eighteen
nineteen
twenty
چاپ خطوط بعد از یک خط خاص
اگر می خواهید از یک خط خاص N شروع کنید، می توانید از گزینه -n در کنار یک عدد مثبت برای رسیدن به آن استفاده کنید. برای چاپ خروجی فایل numbers.txt از خط هفدهم، این دستور را اجرا کنید:
tail-n +17 numbers.txt
نتیجه:
seventeen
eighteen
nineteen
twenty
آخرین N کاراکتر یک فایل را چاپ کنید
درست مانند دستور head، با استفاده از گزینه -c می توانید چند کاراکتر آخر فایل را چاپ کنید. برای چاپ 10 کاراکتر آخر فایل numbers.txt، این دستور را اجرا کنید:
tail-c 10 numbers.txt
نتیجه:
en
twenty
استفاده از دستورات سر و دم با چندین فایل
همچنین می توانید از head and tail برای چاپ همزمان بیش از یک فایل استفاده کنید. این نحو برای استفاده از دستورات با ورودی فایل های متعدد است:
head[option][file1][file2]
tail[option][file1][file2]
استفاده از دستورات سر و دم با هم
حتی می توانید از head and tail در همان دستور با استفاده از نماد pipe استفاده کنید. نماد لوله خروجی یک دستور را به عنوان ورودی به دستور دیگر هدایت می کند.
به عنوان مثال، برای دریافت خطوط ششم، هفتم و هشتم، می توانید این دستور را اجرا کنید:
head -n 8 numbers.txt | tail -n 3
نتیجه:
six
seven
eight
در یک خط فوق، دستور head هشت خط اول فایل را نمایش میدهد، سپس خروجی به دستور tail منتقل میشود که سه خط آخر خروجی تغییر مسیر را چاپ میکند.
سر و دم: دستورات دستکاری متن مفید
لینوکس دستورات زیادی را برای کمک به شما در دستکاری و پردازش موثر فایل های متنی ارائه می دهد و دستورات head و tail تنها دو مورد از بسیاری از آنها هستند. متداول ترین دستورات دستکاری متن عبارتند از grep، uniq، sort، sed، awk و غیره. هر کدام از آنها هدف متفاوتی را با مجموعه ویژگی های منحصر به فرد خود انجام می دهند.
به غیر از head and tail، هزاران دستور دیگر دستکاری متن و فایل برای کاربران لینوکس موجود است.