ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

برش

La برش برنامه برای استخراج بخشی از متن از یک خط و خروجی بخش استخراج شده به خروجی استاندارد استفاده می شود. می تواند چندین آرگومان فایل یا ورودی را از ورودی استاندارد بپذیرد.

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


جدول 20-3: برش گزینه های انتخاب


توضیحات گزینه

توضیحات گزینه

-c char_list بخشی از خط تعریف شده توسط را استخراج کنید char_list. فهرست ممکن است از یک یا چند محدوده عددی جدا شده با کاما تشکیل شده باشد.


تصویر

-f فیلد_لیست یک یا چند فیلد را از خط استخراج کنید که توسط

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


تصویر

-d delim_char چه زمانی -f مشخص شده است، استفاده کنید delim_char به عنوان شخصیت تعیین کننده میدان. به طور پیش فرض، فیلدها باید با یک کاراکتر برگه جدا شوند.


تصویر

--complement کل خط متن را استخراج کنید، به جز آن بخش ها

مشخص شده توسط -c و / یا -f.


تصویر


همانطور که می بینیم، راه برش متن استخراج شده نسبتاً غیر قابل انعطاف است. برش بهتر است برای استخراج متن از فایل هایی که توسط برنامه های دیگر تولید می شوند، به جای متنی که مستقیماً توسط انسان تایپ می شود، استفاده شود. ما نگاهی به ما خواهیم داشت distros.txt فایل کنید تا ببینید آیا آنقدر "تمیز" است که نمونه خوبی برای ما باشد برش مثال ها. اگر استفاده کنیم گربه با -A گزینه، ما می توانیم ببینیم که آیا فایل مورد نیاز ما از فیلدهای جدا شده از برگه ها را برآورده می کند:



[me@linuxbox ~]$ cat -A distros.txt

SUSE^I10.2^I12/07/2006$

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$

[me@linuxbox ~]$ cat -A distros.txt

SUSE^I10.2^I12/07/2006$

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$


SUSE^I10.1^I05/11/2006$

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$

SUSE^I10.1^I05/11/2006$

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$


خوب بنظر میرسه. بدون فضای جاسازی شده، فقط کاراکترهای یک برگه بین فیلدها. از آنجایی که فایل به جای فاصله از برگه ها استفاده می کند، ما از آن استفاده خواهیم کرد -f گزینه استخراج فیلد:


[me@linuxbox ~]$ cut -f 3 distros.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006

[me@linuxbox ~]$ cut -f 3 distros.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006


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



[me@linuxbox ~]$ cut -f 3 distros.txt | برش -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007

[me@linuxbox ~]$ cut -f 3 distros.txt | برش -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007


2007

2007

2006

2006

2008

2006

2008

2006

2007

2007

2006

2006

2008

2006

2008

2006


تصویر

با دویدن برش برای بار دوم در لیست ما، می‌توانیم موقعیت‌های 7 تا 10 کاراکتر را استخراج کنیم که مربوط به سال در فیلد تاریخ ما است. را 7-10 علامت گذاری نمونه ای از یک محدوده است. را برش صفحه man حاوی توضیحات کاملی از نحوه تعیین محدوده است.


در حال گسترش برگه ها

distros.txt فایل برای استخراج فیلدها با استفاده از فرمت ایده آل است برش. اما اگر فایلی را بخواهیم که بتوان به طور کامل با آن دستکاری کرد چه می‌شود برش توسط کاراکترها، به جای فیلدها؟ این امر مستلزم این است که کاراکترهای برگه داخل فایل را با تعداد فاصله های مربوطه جایگزین کنیم. خوشبختانه بسته گنو کوروتیلز دارای ابزاری برای آن است. تحت عنوان گسترش، این برنامه یک یا چند آرگومان فایل یا ورودی استاندارد را می پذیرد و متن اصلاح شده را به خروجی استاندارد خروجی می دهد.

اگر خودمان را پردازش کنیم distros.txt پرونده با گسترش، ما می توانیم از آن استفاده کنیم برش - ج برای استخراج طیف وسیعی از کاراکترها از فایل. برای مثال، می‌توانیم از دستور زیر برای استخراج سال انتشار از فهرست خود، با گسترش فایل و استفاده از آن استفاده کنیم. برش برای استخراج هر کاراکتر از موقعیت بیست و سوم تا انتهای خط:

[me@linuxbox ~]$ گسترش distros.txt | cut -c 23-

Coreutils نیز فراهم می کند گسترش ندادن برنامه ای برای جایگزینی زبانه ها برای فضاها.


هنگام کار با فیلدها، می توان به جای کاراکتر تب، جداکننده فیلد متفاوتی را تعیین کرد. در اینجا اولین فیلد را از قسمت استخراج می کنیم / etc / passwd فایل:


[me@linuxbox ~]$ cut -d ':' -f 1 /etc/passwd | سر

دیمون ریشه

[me@linuxbox ~]$ cut -d ':' -f 1 /etc/passwd | سر

دیمون ریشه


bin sys همگام بازی های مرد lp ایمیل اخبار

bin sys همگام بازی های مرد lp ایمیل اخبار


با استفاده از -d گزینه، ما می توانیم کاراکتر کولون را به عنوان جداکننده فیلد مشخص کنیم.


برترین سیستم عامل Cloud Computing در OnWorks: