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


۲۱ تیر ۱۳۹۹
دستور‌های لینوکس برای مشاهده و مرتب‌سازی فایل‌ها

در این مقاله قصد بررسی برخی از دستور‌هایی را داریم که در مشاهده و مرتب‌سازی محتوای فایل‌ها، به ما کمک خواهند کرد.

بیایید با دستور cat که به احتمال زیاد آن را بسیار دیده‌اید، شروع کنیم. دستور cat برای ترکیب و یکی‌کردن چندین فایل و یا مشاهده محتوای آن‌ها استفاده می‌شود.

۱) دستور cat

نحوه استفاده از دستور cat به شکل زیر است:

نحوه استفاده از دستور cat

بیایید با مثال این قضیه را بررسی کنیم، فرض کنید دو فایل با نام‌ها grocery1.txt و grocery2.txt داریم که هرکدام شامل لیستی از خواربارهای مختلف است.

ابتدا محتوای فایل اول را توسط دستور cat، مشاهده می‌کنیم:

مشاهده محتویات فایل grocery1.txt

از همین روش، محتویات فایل دوم را مشاهده می‌کنیم:

مشاهده محتویات فایل grocery2.txt

در مثال‌های بالا، از دستور cat <filename> برای مشاهده محتویات فایل استفاده کردیم.

اما چه می‌شود اگر بخواهیم فایل‌های بالا را ترکیب کنیم و هر دو آن‌ها را در یک فایل داشته باشیم؟

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

ترکیب دو فایل grocery1.txt و grocery2.txt در فایل groceryFinal.txt

در مثال بالا، از دستور cat grocery1.txt grocery2.txt > groceryFinal.txt استفاده کردیم که در زیر به بیان بخش‌های مختلف آن می‌پردازیم:

  • cat نشان‌دهنده دستوری است که برای مشاهده محتویات فایل از آن استفاده می‌کنیم.
  • grocery1.txt grocery2.txt نام فایل‌هایی است که می‌خواهیم آن‌ها را یکی کنیم.
  • > نشان‌دهنده این است که می‌خواهیم خروجی یک دستور را به عنوان ورودی، به دستور دیگری هدایت کنیم.
  • groceryFinal.txt نشان‌دهنده نام فایل خروجی است، درواقع فایلی که می‌خواهیم نتیجه را در آن ذخیره کنیم.

برای تایید اینکه تمام محتویات این دو فایل به درستی و به صورت کامل به فایل خروجی منتقل شده است، از دستور cat groceryFinal.txt استفاده می‌کنیم تا محتویات آن را مشاهده کنیم.

اما خروجی دستور بالا، برای خواندن اندکی دشوار است، چه اتفاقی می‌افتد که اگر خروجی را در حالی که هر خط شماره دارد، مشاهده کنیم؟

بیایید آن را امتحان کنیم:

مشاهده فایل خروجی به همراه شماره هر خط

در مثال بالا از دستور cat -n groceryFinal.txt استفاده کردیم که در آن -n سوییچی است که از آن برای نمایش شماره هر خط استفاده می‌کنیم.

۲) دستور tac

دستور tac، برعکس دستور cat عمل می‌کند، به عبارتی محتویات فایل را از انتها نمایش می‌دهد. توجه کنید که محتویات فایل را تغییر نمی‌دهد، بلکه تنها آن را از انتها به ابتدا می‌خواند.

نحوه استفاده از دستور tac

برای استفاده از این دستور، کافی است این دستور را به همراه نام فایل مدنظرتان اجرا کنید.

برای مثال می‌توانیم محتویات فایل groceryFinal.txt را، که در مرحله قبل ایجاد کردیم، توسط دستور tac، به صورت برعکس مشاهده کنیم:

مشاهده محتویات فایل groceryFinal.txt، از انتها به ابتدا، توسط دستور tac

در این مثال، از دستور tac groceryFinal.txt استفاده کردیم، که باعث می‌شود محتویات فایل ذکرشده را به صورت برعکس مشاهده کردیم.

۳) دستور rev

این دستور برای برعکس‌کردن خط به خط محتوای یک فایل استفاده می‌شود. یک فایل را از بالا می‌خواند اما هر خط از محتوای آن را برعکس می‌کند و نمایش می‌دهد. تصویر زیر نمایش‌دهنده نحوه استفاده از دستور rev است:

نحوه استفاده از دستور rev

تنها کاری که باید بکنید این است که نام فایل مدنظرتان را ادامه این دستور بنویسید و آن را اجرا کنید.

بیایید فایل groceryFinal.txt را به عنوان ورودی این دستور قرار دهیم و آن را اجرا کنیم:

مشاهده محتویات فایل groceryFinal.txt به صورت برعکس توسط دستور rev

در تصویر بالا از دستور rev استفاده کردیم که هر خط از محتوای این فایل را برعکس می‌کند و نمایش می‌دهد. توجه داشته باشید که محتوای فایل تغییری نمی‌کند، بلکه تنها آن را به شیوه دیگری نمایش می‌دهد.

از نظر من این دستور هیچ کاربردی غیر از این ندارد که به قصد آزار دیگری، فایلی را با این دستور تغییر دهید و باعث سردرگمی آن شخص شوید. 🙂

۴) دستور less

دستور less این امکان را به ما می‌دهد که فایل‌های کوچک تا فایل‌های بسیار بزرگ را در ترمینال خود، به صورت صفحه‌بندی‌شده مشاهده کنیم. به صورت زیر می‌توانید از این دستور استفاده کنید:

نحوه استفاده از دستور less

با توجه به تصویر بالا، تنها کاری که نیاز است انجام دهید این است که این دستور را به همراه نام فایل مدنظرتان اجرا کنید.

دستورات و امکانات قابل استفاده در less

less امکانات و قابلیت‌های زیادی ازجمله: جست‌وجو در محتوای فایل، بالا و پایین‌رفتن در فایل تنها در محیط ترمینال و … را فراهم می‌کند.

۵) دستورهای head و tail

head دستوری است که با استفاده از آن می‌توان تعداد خط مشخصی را از ابتدای فایل نمایش دهیم، به طور مثال با استفاده از توانایی این دستور می‌توانید ۵ خط ابتدایی یک فایل را مشاهده کنیم و به مابقی و ادامه آن هم کاری نداشته باشیم. در مقابل دستور tail قرار دارد که همین کار را از انتهای فایل انجام می‌دهد.

مثال زیر نحوه استفاده از دستور head به جهت مشاهده ۲ خط ابتدایی فایل groceryFinal.txt است:

مشاهده ۲ خط ابتدایی فایل groceryFinal.txt توسط دستور head

در تصویر بالا از دستور head -n 2 groceryFinal.txt استفاده کردیم، که درآن -n 2، تعداد خط‌هایی که می‌خواهیم از ابتدا نشان دهیم را مشخص می‌کند.

تصویر زیر مثالی از استفاده از دستور tail است:

مشاهده ۲ خط انتهایی فایل groceryFinal.txt توسط دستور tail

-n 2 تعداد خط‌هایی که می‌خواهیم از انتها نشان دهیم را مشخص می‌کند.

بنابراین head و tail، دستورهایی هستند که برای مشاهده بخشی از ابتدا یا انتهای یک فایل استفاده می‌شوند.

۶) دستور sort

دستور sort برای مرتب‌سازی خطوط محتوای یک فایل استفاده می‌شود. تصویر زیر نحوه استفاده از این دستور است:

نحوه استفاده از دستور sort

برای استفاده از این دستور تنها کافی است که بعد از دستور sort، گزینه‌های مدنظرتان را به همراه نام فایل مشخص کنید.

اجرای دستور sort بر روی فایل groceryFinal.txt

در مثال بالا از دستور sort groceryFinal.txt استفاده کردیم که خطوط این فایل را به صورت صعودی در حروف الفبای انگلیسی مرتب می‌کند.

اما اگر بخواهیم به صورت نزولی مرتب کنیم، باید چگونه این دستور را اجرا کنیم؟

مرتب‌کردن محتویات یک فایل به صورت نزولی با دستور sort

در مثال بالا از دستور sort -r groceryFinal.txt استفاده کردیم، که در آن سوییچ -r، مشخص می‌کند که می‌خواهیم به صورت نزولی عملیات مرتب‌سازی را انجام دهیم.

آیا می‌توانید حدس بزنید که از چه راه دیگری می‌توانیم به خروجی بالا برسیم؟

اگر حدستان دستور tac است، باید بگویم که بله، درست حدس زده‌اید. می‌توانیم خروجی دستور sort، که به طور پیشفرض به صورت صعودی است را به عنوان ورودی برای دستور tac هدایت کنیم تا خروجی مانند نتیجه مثل قبل شود sort groceryFinal.txt | tac.

اما چه اتفاقی بر سر اعداد خواهد افتاد؟ بیایید بررسی کنیم که دستور sort چه رفتاری با فایلی حاوی اعداد دارد:

اجرای دستور sort بر فایل حاوی اعداد و خروجی اشتباه

صبر کنید، نتیجه اشتباه است، اما چرا؟ دستور sort به طور پیشفرض رقم به رقم عملیات مقایسه را انجام می‌دهد و کاری به مابقی ارقام ندارد (به عبارتی تنها اولین رقم مورد مقایسه قرار می‌گیرد). با‌این‌حال برای مرتب‌سازی اعداد چه کاری باید انجام دهیم؟

تصویر زیر نحوه مرتب‌سازی اعداد داخل یک فایل توسط دستور sort است:

اجرای دستور sort بر فایل حاوی اعداد به شیوه صحیح

در مثال بالا، -n گزینه‌ای است که باعث می‌شود بتوان اعداد را مرتب کرد و در نهایت نام فایل ورودی قرار داده شده است.

برای نمایش اعداد به صورت مرتب‌شده، درحالی که موارد اضافه‌ی تکراری حذف شده‌اند (درواقع اگر عدد تکراری وجود داشته تنها یکی از آن‌ها وجود خواهد داشت و مابقی نمایش داده نخواهند شد)، می‌توانید از دستور زیر استفاده کنید:

نمایش اعداد یکتا و مرتب‌شده داخل فایل

در مثال بالا، سوییچ -un، این موضوع را نشان می‌دهد که نوع مرتب‌سازی، مرتب‌سازی اعداد با خروجی یکتا (unique) می‌باشد.

اما فایلی را تصور کنید که در آن چندین ستون داشته باشید و بخواهید خروجی را براساس دیتای موجود در یک ستون خاص مرتب کنید، در این حالت چاره چیست؟ تصویر زیر پاسخ این قضیه است:

مرتب‌سازی براساس یک ستون مشخص

در این مثال، سوییچ -k 2n به این معنا است که می‌خواهیم خروجی براساس ستون دوم که مقادیر آن عددی است، مرتب شود، درواقع -n همانند مثال‌های قبلی بیانگر مرتب‌سازی اعداد ستون دوم، توسط این دستور است.

این دستورها، دستورهای پایه‌ای برای مشاهده فایل‌ها در سیستم‌عامل ‌لینوکس بودند.

منبع: https://dev.to/yashsugandh/commands-for-viewing-and-sorting-files-452j

برچسب‌ها:

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

توسعه‌دهندگان درباره‌ی ما چه می‌گویند

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیت‌های سرویس دیتابیس‌شون اینه که خودشون به صورت دوره‌ای بکآپ میگیرن.
...

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)