لینوکس و سایر سیستم عامل های مبتنی بر یونیکس ابزار زیادی برای پردازش متن در خط فرمان دارند. بدون این ابزار ما مجبور خواهیم بود خروجی یک فرمان را یادداشت کرده و آن را در فرمان بعدی تایپ کنیم. فرمان cut یکی از آنها است که به ما امکان میدهد بخش هایی از متن درون یک فایل که به آن نیاز داریم را جدا کنیم.
به گزارش «خبرنامه دانشجویان ایران»؛ فرمان cut که بخشی از رعایت الزامات POSIX نیز محسوب میشود، در چند مورد استفاده مختلف بسیار مفید است. اگر چه این فرمان به قدرتمندی سایر فرمانها نیست، اما به نوبه خود بسیار کاربردی است. همانگونه که از نام آن مشخص است از فرمان cut برای بریدن بخشی از یک متن استفاده میشود. بیشترین مورد استفاده این فرمان برای بریدن اطلاعات از جداول متنی مثل یک فایل CSV یا خروجی ps است.
چگونه از فرمان cut در لینوکس استفاده کنیم؟
ساختار کلی فرمان cut به این شکل است:
cut OPTION... [FILE]...
اگر چه چنین ساختاری کمک چندانی به درک آن نمیکند، اما ما در ادامه به چند گزینه از آن که بیشترین مورد استفاده را دارد خواهیم پرداخت.
ابتدا ما نگاهی به استخراج متن از یک جدول با استفاده از تبهای بین ستونها خواهیم داشت.
cut -f 1,5 -d ':'/etc/passwd
این فرمان ستونهای یک و پنج، فیلدهای user ID و توصیف کاربر را از فایل /etc/passwd استخراج خواهد کرد. در اینجا ما از سویچ –f برای مشخص کردن فیلدهای مورد نظر خود استفاده کردهایم. این گزینه از کاراکتر جداکننده ویرگول برای مقادیر به شکل x-y استفاده میکند. در اینجا x نشانگر حد پایین و y نشانگر حد بالا است.
علاوه بر این، شما میتوانید گزینههای دیگری را نیز به این فرمان اضافه کنید. گزینه –d برای مشخص کردن حائل، یا جداکننده مقادیر به کار میرود. فایلهای مختلف از مقادیر مختلف برای این جداسازی استفاده میکنند. فایل /etc/passwd از دو نقطه (:) استفاده میکند، اما فایل csv از ویرگول (,) استفاده میکند. بنابراین بسیار مفید خواهد بود که بتوانید یک جداکننده دیگر، غیر از جداکننده تب پیش فرض را انتخاب کنید.
cut -f 1-3,7 -d ':'/etc/passwd
فرمان بالا مشخص میکند که فیلدهای یک تا 3 و همینطور فیلد هفتم در نظر گرفته شود.
توجه داشته باشید که خروجی بعضی از برنامهها همیشه هم متحد الشکل نبوده و بعضی اوقات با فیلدهای خالی همراه است که باعث میشود فرمان cut برخلاف انتظار رفتار کند. یک مثال در این زمینه استفاده از کاراکتر اسپیس به جای تب برای ایجاد فاصله است. چنین اتفاقی غیر معمول نیست. بعضی اوقات شما میتوانید از طریق tr قبل از cut این موضوع را برطرف کنید.
tr -s ''''
فرمان tr یک فرمان تقدم و تاخر است که به شما اجازه میدهد کاراکترهای درون یک فایل را تعویض کنید. چیزی شبیه به sed، اما نه به انعطاف پذیری آن. گزینه –s در این فرمان تمام فضاهای خالی را به یک کاراکتر اسپیس خلاصه میکند.
بعضی اوقات لازم میشود که جداکننده استفاده شده در فایل ورودی را تغییر دهید. برای این کار میتوانید از گزینه --output-delimiter استفاده کنید.
cut -f 1,5 -d ':' --output-delimiter=$' ' /etc/passwd
در اینجا ما تب را به عنوان جداکننده تعیین کردهایم. از آنجا که ما نمیتوانیم به سادگی یک کاراکتر تب را منتقل کنیم (فشردن کلید تب معمولا به bash میگوید تا نقش تکمیل خودکار را ایفا کند)، ما از $’ ’ برای انتقال کاراکتر تب استفاده میکنیم.
اینها اصول پایه استفاده از فرمان cut هستند. اما قابلیتهای دیگری نیز در این فرمان نهفته است که میتوانید با مراجعه به راهنمای آن از آنها نیز استفاده کنید.
منبع: fossbytes