خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش دستور cut در لینوکس
ابزارهای بسیاری در سیستم های لینوکس و یونیکس موجود است که به شما امکان پردازش و فیلتر کردن فایل های متنی را می دهد. cut یک ابزار خط فرمان در لینوکس و یونیکس است به شما امکان می دهد بخش هایی از خطوط را از فایل های مشخص شده یا داده های Pipe شده کات کنید و در خروجی نتیجه را نمایش دهید. از cut می توان برای کات کردن بخش هایی از یک خط توسط جداکننده، موقعیت بایت و کاراکتر استفاده کرد.
در این مقاله نحوه استفاده از دستور cut در لینوکس را همراه با مثال های مختلف مورد بررسی قرار خواهیم داد.
options گزینه هایی که رفتار cut را می تواند کنترل کند و امکاناتی را به cut می تواند اضافه کند که مثلا با یک رویکرد خاص کار خود را انجام دهد.
شما می توانید فقط ای یکی از گزینه های ذکر شده در فوق را استفاده کنید.
گزینه های دیگر عبارتند از:
d- جداکننده ای را مشخص می کند که به جای جدا کننده پیشفرض یعنی TAB استفاده شود.
Complement-- برای تکمیل کردن انتخاب است. هنگام استفاده از این گزینه، cut تمام بایت ها، کاراکترها یا فیلدها به جز موارد انتخاب شده را نمایش می دهد.
s- به طور پیش فرض cut خطوطی را که فاقد کاراکتر جداکننده هستند پرینت می کند. وقتی که از این گزینه استفاده شود، cut خطوطی را که حاوی جداکننده نیستند پرینت نمی کند.
output-delimiter-- رفتار پیش فرض cut استفاده از جداکننده input یا ورودی همانند جداکننده خروجی است. پس این گزینه به شما امکان می دهد رشته جداکننده خروجی متفاوتی را مشخص کنید.
در دستور cut می تواند یک یا چندین فایل را معرفی کنید و حتی می توانید هیچ فایلی را به این دستور به عنوان پارامتر پاس ندهید.
آرگومان LIST که به گزینههای -f، -b و -c ارسال میشود، میتواند یک عدد صحیح، اعداد صحیح متعدد که با کاما از هم جدا شدهاند، محدودهای از اعداد صحیح یا چندین محدوده اعداد صحیح باشد که با کاما از هم جدا شدهاند. هر محدوده می تواند یکی از موارد زیر باشد:
N که N مین فیلد، بایت یا کاراکتر که از 1 شروع شده، می باشد.
-N از N مین فیلد، بایت و یا کاراکتر تا آخر خط می باشد.
N-M از فیلد، بایت یا کارکتر N تا M
-M از اولین فیلد، کاراکتر، بایت تا M مین بایت، کارکتر یا فیلد.
برای تعیین فیلدهایی که باید cut شوند، دستور را با گزینه f- اجرا کنید. وقتی جداکننده مشخص نباشد، طبق انچه که بالاتر گفته شد، جداکننده پیشفرض TAB خواهد بود.
در مثال های زیر از فایل زیر استفاده خواهیم کرد. فیلدها با tab از هم جدا می شوند:
به عنوان مثال برای نمایش اولین و سومین فیلد، از دستور زیر استفاده کنید:
خروجی:
یا اگر می خواهید از فیلد 1 تا 4 نمایش داده شود:
به منظور cut کردن بر اساس جداکننده ای که شما تعیین می کنید، دستور را با گزینه d- اجرا کنید و سپس جداکننده مورد نظرتان را معرفی کنید. به عنوان مثال، برای نمایش فیلدهای 1 و 3 با استفاده از جداکننده : از دستور زیر استفاده کنید:
می توانید از هر کاراکتری به عنوان جداکننده استفاده کنید. . در مثال زیر، از کاراکتر space به عنوان جداکننده استفاده می کنیم و فیلد دوم را پرینت می کنیم:
نحوه complement یا تکمیل انتخاب:
برای تکمیل لیست فیلد انتخاب شده از گزینه complement-- استفاده کنید. فقط فیلدهایی پرینت خواهند شد که با f- انتخاب نشده اند.
دستور زیر تمام فیلدها به جز فیلد 1 و 3 را پرینت می کند:
نحوه کات با بایت ها و کاراکترها:
قبل از ادامه، بیایید بین بایت ها و کاراکترها تمایز قائل شویم. یک بایت 8 بیت است و می تواند 256 مقدار مختلف را نشان دهد. هنگامی که استاندارد ASCII ایجاد شد، تمام حروف، اعداد و سمبل های لازم برای کار با انگلیسی را در نظر گرفت. جدول کاراکترهای ASCII دارای 128 کاراکتر بوده و هر کاراکتر نمایانگر یک بایت است. زمانی که کامپیوتر ها در مقیاس جهانی برای استفاده در دسترس عموم قرار گرفتند، شرکت های فناوری شروع به معرفی encoding کاراکترهای جدید برای زبان های مختلف کردند. برای زبان هایی که بیش از 256 کاراکتر دارند، mapping ساده 1 به 1 امکان پذیر نبود که منجر به مشکلات مختلفی مانند share کردن داکیومنت ها یا browse کردن وب سایت ها میشود و یک استاندارد یونیکد جدید که بتواند اکثر سیستمهای نوشتاری جهان را مدیریت کند مورد نیاز بود. UTF-8 برای حل این مشکلات ایجاد شد. در UTF-8، همه کاراکترها فقط نمایانگر 1 بایت نیستند بلکه کاراکترها را می توان با 1 بایت تا 4 بایت نشان داد.
گزینه b- به فرمان cut می گوید که بخش هایی را از هر خط مشخص شده توسط موقعیت های بایت داده شده را کات می کند.
در مثال های زیر از کاراکتر ü استفاده می کنیم که 2 بایت می گیرد.
مثلا، در دستور پنجمین بایت را انتخاب می کند:
بایت های پنجم، نهم و سیزدهم را انتخاب کنید:
محدوده از بایت 1 تا 5 م را انتخاب کنید:
دستور cut معمولا در ترکیب با دستورات دیگر از طریق Pipe استفاده می شود. نمونه هایی از آن را با هم در ادامه خواهیم دید.
در مثال زیر، cut برای حذف 8 بایت اول از هر خط خروجی دستور history استفاده شده است:
در این مقاله نحوه استفاده از دستور cut در لینوکس را همراه با مثال های مختلف مورد بررسی قرار خواهیم داد.
نحوه بکارگیری دستور cut در لینوکس
Syntax کلی دستور cut در لینوکس بصورت زیر است:cut OPTION... [FILE]...
options گزینه هایی که رفتار cut را می تواند کنترل کند و امکاناتی را به cut می تواند اضافه کند که مثلا با یک رویکرد خاص کار خود را انجام دهد.
-f
یک field ، مجموعه ای از field ها یا محدوده ای از field ها را انتخاب کنید که این پرکاربردترین option یا گزینه در دستور cut است.-b
یک بایت، مجموعه ای از بایت ها و یا محدوده ای از بایت ها را انتخاب کنید.-c
یک کاراکتر، مجموعه ای از کاراکترها یا طیف وسیعی از کاراکترها را انتخاب کنید.شما می توانید فقط ای یکی از گزینه های ذکر شده در فوق را استفاده کنید.
گزینه های دیگر عبارتند از:
d- جداکننده ای را مشخص می کند که به جای جدا کننده پیشفرض یعنی TAB استفاده شود.
Complement-- برای تکمیل کردن انتخاب است. هنگام استفاده از این گزینه، cut تمام بایت ها، کاراکترها یا فیلدها به جز موارد انتخاب شده را نمایش می دهد.
s- به طور پیش فرض cut خطوطی را که فاقد کاراکتر جداکننده هستند پرینت می کند. وقتی که از این گزینه استفاده شود، cut خطوطی را که حاوی جداکننده نیستند پرینت نمی کند.
output-delimiter-- رفتار پیش فرض cut استفاده از جداکننده input یا ورودی همانند جداکننده خروجی است. پس این گزینه به شما امکان می دهد رشته جداکننده خروجی متفاوتی را مشخص کنید.
در دستور cut می تواند یک یا چندین فایل را معرفی کنید و حتی می توانید هیچ فایلی را به این دستور به عنوان پارامتر پاس ندهید.
آرگومان LIST که به گزینههای -f، -b و -c ارسال میشود، میتواند یک عدد صحیح، اعداد صحیح متعدد که با کاما از هم جدا شدهاند، محدودهای از اعداد صحیح یا چندین محدوده اعداد صحیح باشد که با کاما از هم جدا شدهاند. هر محدوده می تواند یکی از موارد زیر باشد:
N the Nth field, byte or character, starting from 1.
N- from the Nth field, byte or character, to the end of the line.
N-M from the Nth to the Mth field, byte, or character.
-M from the first to the Mth field, byte, or character.
N که N مین فیلد، بایت یا کاراکتر که از 1 شروع شده، می باشد.
-N از N مین فیلد، بایت و یا کاراکتر تا آخر خط می باشد.
N-M از فیلد، بایت یا کارکتر N تا M
-M از اولین فیلد، کاراکتر، بایت تا M مین بایت، کارکتر یا فیلد.
برای تعیین فیلدهایی که باید cut شوند، دستور را با گزینه f- اجرا کنید. وقتی جداکننده مشخص نباشد، طبق انچه که بالاتر گفته شد، جداکننده پیشفرض TAB خواهد بود.
در مثال های زیر از فایل زیر استفاده خواهیم کرد. فیلدها با tab از هم جدا می شوند:
245:789 4567 M:4540 Admin 01:10:1980
535:763 4987 M:3476 Sales 11:04:1978
به عنوان مثال برای نمایش اولین و سومین فیلد، از دستور زیر استفاده کنید:
cut test.txt -f 1,3
خروجی:
245:789 M:4540
535:763 M:3476
یا اگر می خواهید از فیلد 1 تا 4 نمایش داده شود:
cut test.txt -f -4
245:789 4567 M:4540 Admin
535:763 4987 M:3476 Sales
به منظور cut کردن بر اساس جداکننده ای که شما تعیین می کنید، دستور را با گزینه d- اجرا کنید و سپس جداکننده مورد نظرتان را معرفی کنید. به عنوان مثال، برای نمایش فیلدهای 1 و 3 با استفاده از جداکننده : از دستور زیر استفاده کنید:
cut test.txt -d ':' -f 1,3
245:4540 Admin 01
535:3476 Sales 11
می توانید از هر کاراکتری به عنوان جداکننده استفاده کنید. . در مثال زیر، از کاراکتر space به عنوان جداکننده استفاده می کنیم و فیلد دوم را پرینت می کنیم:
echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum
نحوه complement یا تکمیل انتخاب:
برای تکمیل لیست فیلد انتخاب شده از گزینه complement-- استفاده کنید. فقط فیلدهایی پرینت خواهند شد که با f- انتخاب نشده اند.
دستور زیر تمام فیلدها به جز فیلد 1 و 3 را پرینت می کند:
cut test.txt -f 1,3 --complement
4567 Admin 01:10:1980
4987 Sales 11:04:1978
نحوه تعیین جداکننده خروجی برای دستور cut در لینوکس
برای تعیین جداکننده خروجی از گزینه output-delimiter-- استفاده کنید. به عنوان مثال، ما تنظیم جداکننده خروجی را کاراکتر _ در نظر می گیریم.cut test.txt -f 1,3 --output-delimiter='_'
245:789_M:4540
535:763_M:3476
نحوه کات با بایت ها و کاراکترها:
قبل از ادامه، بیایید بین بایت ها و کاراکترها تمایز قائل شویم. یک بایت 8 بیت است و می تواند 256 مقدار مختلف را نشان دهد. هنگامی که استاندارد ASCII ایجاد شد، تمام حروف، اعداد و سمبل های لازم برای کار با انگلیسی را در نظر گرفت. جدول کاراکترهای ASCII دارای 128 کاراکتر بوده و هر کاراکتر نمایانگر یک بایت است. زمانی که کامپیوتر ها در مقیاس جهانی برای استفاده در دسترس عموم قرار گرفتند، شرکت های فناوری شروع به معرفی encoding کاراکترهای جدید برای زبان های مختلف کردند. برای زبان هایی که بیش از 256 کاراکتر دارند، mapping ساده 1 به 1 امکان پذیر نبود که منجر به مشکلات مختلفی مانند share کردن داکیومنت ها یا browse کردن وب سایت ها میشود و یک استاندارد یونیکد جدید که بتواند اکثر سیستمهای نوشتاری جهان را مدیریت کند مورد نیاز بود. UTF-8 برای حل این مشکلات ایجاد شد. در UTF-8، همه کاراکترها فقط نمایانگر 1 بایت نیستند بلکه کاراکترها را می توان با 1 بایت تا 4 بایت نشان داد.
گزینه b- به فرمان cut می گوید که بخش هایی را از هر خط مشخص شده توسط موقعیت های بایت داده شده را کات می کند.
در مثال های زیر از کاراکتر ü استفاده می کنیم که 2 بایت می گیرد.
مثلا، در دستور پنجمین بایت را انتخاب می کند:
echo 'drüberspringen' | cut -b 5
b
بایت های پنجم، نهم و سیزدهم را انتخاب کنید:
echo 'drüberspringen' | cut -b 5,9,13
bpg
محدوده از بایت 1 تا 5 م را انتخاب کنید:
echo 'drüberspringen' | cut -b 1-5
drüb
دستور cut معمولا در ترکیب با دستورات دیگر از طریق Pipe استفاده می شود. نمونه هایی از آن را با هم در ادامه خواهیم دید.
مشاهده لیستی از کاربران لینوکس با دستور cut
از دستور getent می توان برای تهیه لیست کاربران لینوکس استفاده کرد. حالا خروجی دستور به cut همانطور که در ذیل مشاهده می کنید، Pipe می شود و cut فقط فیلد اول را پرینت می کندو از : به عنوان جداکننده استفاده می کند:getent passwd | cut -d ':' -f1
در مثال زیر، cut برای حذف 8 بایت اول از هر خط خروجی دستور history استفاده شده است:
history | cut -c8- | sort | uniq -c | sort -rn | head
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: