четверг, 4 июля 2013 г.

commands head and tail, и другие что используются с ними


head [ -10/-n10] выводит по умолчанию 10 или указанное количество строк из входящего потока или указанного файла. Можно также N символов, а не строк: head -c10
-q не выводить имена файлов если мы указываем несколько файлов на вход: head -q f1 *.txt

tail [ -10/-n10] выводит последние 10 или указанное количество строк
-n+10 выводит начиная из указанной строки и до конца файла строки.
-n10 / -n 10 выводи последние 10 строк.
-f(--follow[=])[{name|descriptor}] по мере добавления строк в указанный файл или входящий поток, они выводятся в исходящий
--retry пытается еще и еще открыть файл если к нему нет доступа. Полезно в паре с --follow=name --retry
-F тоже самое что --follow=name --retry

пример:
yes | nl | head -n 10000000 > foo &
tail -F foo

cut для вытягивания колонок из файлов, полезно для работы с файлами, которые разбиты табами в некие колонки, например некие базы данных.
-f1,5 вывести 1-ю и 5-ю колонки
-f4 -d'.' вывести 4-ю колонку, но удалить в ней все, что находится после первой встретившейся точки
-c1-20 вырезасть с 1 по 20 символ из файла, тут колонки получаются просто не причем.
Вот примеры использования:
wget ftp://ftp.ncbi.nih.gov/genomes/Bacteria/Escherichia_coli_K_12_substr__W3110_uid161931/NC_007779.ptt
head *ptt
cut -f2 *ptt | head
cut -f2,5 *ptt | head
cut -f2,5 *ptt | head -30
cut -f1 *ptt | cut -f1 -d’.’ | head
cut -c1-20 *ptt | head

nl numerate lines. Берет файл и проставляет его строкам впереди нумерацию.
Чтобы узнать количество строк в файле можно произвести следующую манипуляцию:
nl file.txt | tail -1


paste соединить между собой данные представленные в виде колонок.
tail -n+3 *ptt | cut -f1 > locs
tail -n+3 *ptt | cut -f5 > genes
paste genes locs genes | head

sort соритирует строки файла или входного потока.
-r рекурсивная сортировка.
-R рандомная сортировка.
-n(--numeric-sort)  две строки будут сравниваться по по кодах их символов.
-k3,7(--key=3,7) означает что ключем для сравнение будет считаться подстрока от 3-го до 7-го символа включительно.

uniq - выводит только уникальные строки введенного.
-c count возвращает возле строк количество встретившихся
-d(--repeated) выводятся только строки, которые встретились несколько раз.

wc words count.
wc *ptt # lines, words, bytes
wc -l *ptt # only number of lines
wc -L *ptt # longest line length, useful for apps like style checking

split дробит большие файлы на мелкие, это чаще всего начальная операция перед каким-нибудь исчислением в параллельных джобах.
-d(--numeric-suffixes) исользовать числовые суфиксы в дробях-файлах вместо алфавитных
-l NUMBER(--linues=NUMBER) файлы-дроби получаются из NUMBER строк исходного файла.



Комментариев нет:

Отправить комментарий