7.19 cut - напечатать определ©нные части строк вводного файла contents

7.19 cut - напечатать определ©нные части строк вводного файла

Использование программы:
cut option... file...
программа выводит на устройство стандартного вывода часть каждой строки из входного потока.

В нижеследующей таблице используются обозначения: byte-list, character-list, field-list, которые представляют собой последовательность чисел -- одно число или несколько чисел через запятую, а также числовой интервал -- два числа раздел©нных знаком минус. Нумерация байтов, символов и полей начинается с 1. Можно использовать открытые интервалы, например, -7 означает 1-7 от 1 до 7, 9- означает от 9 до конца строки.

Программа cut воспринимает следующие параметры:

-b byte-list
-bytes=byte-list
Вывести только байты в позициях перечисленных в byte-list. Символы <TAB> и <BS> рассматриваются как 1 байт.

-c character-list
-characters=character-list
Вывести только символы в позициях перечисленных в character-list. Практически то же, что в параметре -b, но в будущем интернационализация может изменить это положение (новые коды символов занимают могут занимать несколько байтов).

-f fiels-list
-fields=fiels-list
Выводить только поля указанные в fiels-list. По умолчанию разделителем полей является символ <TAB>.

-d delim
-delimiter=delim
Используется совместно с параметром -f, поля будут разделяться первым символом строки delim. По умолчанию разделитель полей есть <TAB>.

-n
Не разделять многобайтные символы (пока не используется).

-s
-only-delimited
Используется совместно с параметром -f, не печатать строки, которые не содержат символ разделителя полей.

/sectionexpand/unexpand - преобразовать табуляторы в пробелы и обратно

Использование программ:
expand [option...] [file...]
unexpand [option...] [file...]
Программа expand заменяет знаки табулятора <TAB> в строках, где они встретились, на столько пробелов, на сколько необходимо. Программа unexpand производит обратное преобразование, т.е. пытается заменить встреченные пробелы знаками <TAB>.

Следует заметить, что такие преобразования могут оказаться весьма не безобидными: несмотря на то, что внешний вид текста практически не изменится, изменится его объ©м, а некоторые файлы (например, make файлы) могут оказаться неработоспособными после expand.

Программа expand воспринимает следующие параметры.

-tab1,tab2...
-t tab1,tab2...
-tabs=tab1,tab2...
Обработать знаки табулятора <TAB> со значениями колонок табуляции tab1,tab2 (нумерация колонок начинается с 0) и т.д. Кроме того, заменить все знаки табулятора за пределами представленного списка знаками пробела. Если колонки табуляции указаны значениями параметров -t или -bf tabs=, то их можно разделять как запятыми, так и пробелами.

-i
-initial
Преобразовать в пробелы только начальные табуляторы в строках, т.е. табуляторы, которые непосредственно предшествуют символам не совпадающим с пробелом или табулятором.

Программа unexpand по умолчанию заменяет в символы табулятора только начальные пробелы в каждой вводной строке. Символы <BS> уменьшают сч©тчик колонок для помещения знака <TAB>. По умолчанию, знаки табуляции устанавливаются через каждые 8 колонок. Программа воспринимает следующие параметры.

-tab1,tab2...
-t tab1,tab2...
-tabs=tab1,tab2...
Установить знаки табулятора <TAB> со значениями колонок табуляции tab1,tab2 (нумерация колонок начинается с 0) и т.д. Кроме того, оставить без изменений все знаки пробелов и табуляторов за пределами представленного списка. Если колонки табуляции указаны значениями параметров -t или -bf tabs=, то их можно разделять как запятыми, так и пробелами.

-a
-all
Заменить где возможно все пробелы знаками табуляции, а не только начальные пробелы в каждой строке.

Итак, пример. Нам надо было сравнить два каталога, чтобы установить есть ли в них общие имена


ls -1 /lib  > /tmp/Lib

ls -1 /usr/lib > /tmp/Ulib

comm /tmp/Lib /tmp/Ulib | expand --tabs=10,50 | cut -b 51-70 | uniq -c

Выполнив привед©нную выше последовательность мы увидим, что имеется лишь одно общее имя в обоих каталогах libc5-compat.


contents
Обновлено: 16.03.2015