لینوکسی بشیم: تغییر محتویات فایل

در این نوشته میخوایم دستورهایی رو بررسی کنیم که کمک میکنن محتویات یه فایل رو به شکلی که میخوایم نمایش بدیم. دستورای این قسمت خوب هستن ولی خیلی پیشرفته نیستن. بعدا دستورای بهتری یاد می‌گیریم ولی این دستورها هم خودشون کار راه انداز هستن و حتما به درد میخورن. معمولا برای فایل‌هایی استفاده میشن که منظم هستن و یه قاعده‌ای تو ساختارشون هست. حالا میبینیم. طبیعتا کسانی که میخوان مهندس دواپس یا سیس ادمین لینوکس بشن این مطلب رو مفید خواهند یافت. شاید کسایی که میخوان برنامه‌نویسی در لینوکس کنن اصلا به دردشون نخوره.

تو این مطلب فرض بر اینه که آشنایی با خط فرمان و فایل‌ها در لینوکس دارید.

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

این فایل من اطلاعاتی در مورد یه برنامه داره. من میخوام باهاش کار کنم و اون جور که دلم میخواد محتویاتش رو نشون بدم. چشمی که نگاه کنیم میبینیم ۵ تا ستون داره که با ویرگول جدا شدن و سطر اول هم header هستش. این نگاه در استفاده از دستورات این قسمت کمک میکنه.

اولین دستورمون cut هست. با این دستور فایل رو عمودی می‌بُرم و توی خروجی میبینم:

منظور از عمودی همون ستونیه. ستون‌ها رو با f- معلوم میکنیم. کافیه جلوش عدد رو بذاریم (چسبیده یا با فاصله فرقی نداره). به طور پیشفرض ستون‌ها با TAB مشخص میشن در cut ولی در دستور بالا با استفاده از d- من گفتم ویرگول رو به عنوان جدا کننده یا delimiter بگیر. تو تصویر گفتم که ستون اول رو نشون بده. میتونیم با خط فاصله بهش بگیم از کدوم ستون تا کدوم ستون رو بده:

اینجا گفتم از ۱ تا ۳ رو بده. با خط فاصله میشه کارهای دیگه‌ای هم کرد که توی man دنبالش بگردین. با cut میشه کاراکترها رو هم جدا کرد. اونم با c-. دقیقا مثل ستون هست دستورش. اینو خودتون امتحان کنید. آپشن d- رو گفتم؛ وقتی مثلا اگه ستون‌های فایلمون با ویرگول یا کاراکتر دیگه‌ای جدا شده باشه خیلی کمک میکنه.

بحث بعدی در مورد sort هست. فایلمون یه کم تغییر کرده اینجا و ستون‌هاش با ویرگول جدا نمیشن. از اسم دستور معلومه که مرتب میکنه:

در مرتب کردن هم فقط حرف اول مهمه. به این ترتیب که اول حروف نگارشی مثل نقطه و ویرگول، بعد اعداد به ترتیب و در آخر هم حروف به ترتیب. اگه حرف اول یکسان باشه بعدش حرف بعدی رو در نظر میگیره و همین طور تا آخر. با r- برعکس مرتب میشه؛ یعنی اول میره از حروف و اونم از z شروع میکنه. کارای جالب‌تری هم میشه باهاش در مرتب کردن عددی کرد. اگر ستونی داشته باشیم که همه‌اش عدده به طور پیشفرض همونطور که گفتیم میره و عدد اول رو نگاه میکنه:

اما من اینجوری دوست ندارم و میخوام واقعا به کل عدد توجه کنه. پس از g- استفاده میکنم:

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

الان بر اساس اون واحدهای جلوش مرتب میکنه.

وقتی sort رو میگن معمولا uniq رو هم میگن. این دستور اگه دو تا یا تعداد بیشتری سطر پشت هم یکسان باشن، تکراری‌ها رو پاک میکنه و فقط یکی‌شون رو میذاره (آخر جمله‌بندی بود!). اول فایل اصلی و بعد تاثیر uniq رو ببینید:

دقت کنید که اگه تکراری‌ها فقط پشت سر هم باشن حذف میشن. دستور uniq رو با sort معمولا استفاده میکنن تا کل تکراری‌ها از بین بره. برای این کار نیاز به یه ابزار دیگه در شل داریم که مربوط به مبحث دیگه‌اس که ان شاء الله بعدا یادش میگیریم و از این ترکیب کردن‌ها هم انجام میدیم.

آخرین دستور ما تو این قسمت paste هست:

محتویات دو یا چند فایل ستونی رو به شکل ستونی میذاره کنار هم. یعنی اول ستون‌های فایل اول و بعد ستون‌های فایل دوم و همین طور تا آخر رو میذاره. یه آپشن هم داره که s- هست و اون به جای ستونی میاد ستون‌های هر فایل رو سطری می‌نویسه:

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

قسمت قبلی