Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

вырезать

The вырезать Программа используется для извлечения части текста из строки и вывода извлеченной части на стандартный вывод. Он может принимать несколько аргументов файла или ввод со стандартного ввода.

Указание части строки, которую нужно извлечь, несколько неудобно и задается с помощью следующих параметров:


Таблица 20-3: Параметры выбора вырезки


Вариант Описание

Вариант Описание

-c список_символов Извлеките часть строки, определенную список_символов. Список может состоять из одного или нескольких числовых диапазонов, разделенных запятыми.


изображение

-f список полей Извлеките одно или несколько полей из строки, как определено

список полей. Список может содержать одно или несколько полей или диапазонов полей, разделенных запятыми.


изображение

-d delim_char После появления -f указано, используйте delim_char как символ, ограничивающий поля. По умолчанию поля должны быть разделены одним символом табуляции.


изображение

--complement Извлечь всю строку текста, кроме этих частей

указано -c и / или -f.


изображение


Как видим, путь вырезать извлекает текст довольно негибкий. вырезать лучше всего использовать для извлечения текста из файлов, созданных другими программами, а не текста, непосредственно вводимого людьми. Мы посмотрим на наши дистрибутивы.txt файл, чтобы проверить, достаточно ли он «чист», чтобы служить хорошим образцом для нашего вырезать Примеры. Если мы используем кошка с -A вариант, мы можем увидеть, соответствует ли файл нашим требованиям к полям, разделенным табуляцией:



[я @ linuxbox ~] $ кошка -A дистрибутив.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$

[я @ linuxbox ~] $ кошка -A дистрибутив.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 возможность извлечения поля:


[я @ linuxbox ~] $ вырезать -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

[я @ linuxbox ~] $ вырезать -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


Потому что наши дистрибутивы файл разделен табуляцией, лучше использовать вырезать для извлечения полей, а не символов. Это связано с тем, что, когда файл разделен табуляцией, маловероятно, что каждая строка будет содержать одинаковое количество символов, что затрудняет или делает невозможным вычисление позиций символов в строке. Однако в нашем примере выше мы извлекли поле, которое, к счастью, содержит данные одинаковой длины, поэтому мы можем показать, как работает извлечение символов, извлекая год из каждой строки:



[я @ linuxbox ~] $ cut -f 3 distros.txt | вырезать -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007

[я @ 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 обозначение является примером диапазона. В вырезать Справочная страница содержит полное описание того, как можно указывать диапазоны.


Расширяющиеся вкладки

Наша команда дистрибутивы.txt файл идеально отформатирован для извлечения полей с помощью вырезать. Но что, если нам нужен файл, которым можно было бы полностью управлять с помощью вырезать по символам, а не по полям? Это потребует от нас замены символов табуляции в файле на соответствующее количество пробелов. К счастью, в пакете GNU Coreutils есть инструмент для этого. Именованный расширять, эта программа принимает один или несколько аргументов файла или стандартный ввод и выводит измененный текст в стандартный вывод.

Если мы обработаем наши дистрибутивы.txt файл с расширять, Мы можем использовать вырезать -c для извлечения любого диапазона символов из файла. Например, мы могли бы использовать следующую команду, чтобы извлечь год выпуска из нашего списка, развернув файл и используя вырезать чтобы извлечь каждый символ с двадцать третьей позиции до конца строки:

[я @ linuxbox ~] $ развернуть distros.txt | вырезать -c 23-

Coreutils также предоставляет не раскрывать программа для замены табуляции пробелами.


При работе с полями можно указать другой разделитель полей вместо символа табуляции. Здесь мы извлечем первое поле из / И т.д. / пароль файл:


[я @ linuxbox ~] $ вырезать -d ':' -f 1 / etc / passwd | голова

корневой демон

[я @ linuxbox ~] $ вырезать -d ':' -f 1 / etc / passwd | голова

корневой демон


bin sys sync игры man lp mail новости

bin sys sync игры man lp mail новости


Посмотрите на график -d вариант, мы можем указать символ двоеточия в качестве разделителя поля.


Лучшие облачные вычисления для ОС в OnWorks: