П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180367 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78666 раз(а).

Учебник HTML.
Просмотров 75673 раз(а).

Руководство по PHP5.
Просмотров 46691 раз(а).

Хостинг через призму DNS.
Просмотров 54146 раз(а).

Подборка текстов стандартных документов.
Просмотров 46604 раз(а).

Учебник PHP - Самоучитель
Просмотров 52787 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53382 раз(а).

Внешние атаки...
Просмотров 43165 раз(а).

Учебник PHP.
Просмотров 38718 раз(а).

SSI в примерах.
Просмотров 28636 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

16. Практические awk-программы

16.1 Переизобретение колеса для забавы и пользы

16.1.4 Разделение большого файла на части

Программа split разделяет большие текстовые файлы на меньшие части. По умолчанию, выходные файлы именуются `xaa', `xab', и т. д. Каждый файл содержит 1000 строк, за исключением последнего. Для изменения количества строк в каждом файле нужно указывать в командной строке число с предшествующим минусом, например `-500' для файлов с 500 строк вместо 1000. Чтобы изменить имена выходных файлов на что-нибудь вроде `myfileaa', `myfileab', и т.д., нужно указать дополнительный аргумент с именем файла.

Приведем версию split в awk. Она использует функции ord и chr, представленные в разделе 15.5 [Перевод символов в числа и обратно], стр. 174. Программа сначала устанавливает параметры по умолчанию, а затем проверяет, не слишком ли много аргументов задано. Затем она смотрит на каждый заданный аргумент. Первый аргумент может быть минусом со следующим за ним числом. Если так, то он выглядит как отрицательное число. Это число превращается в положительное и становится счетчиком строк. Имя файла с данными обходится и последний аргумент используется как префикс для имен выходных файлов.

# split.awk --- моделирует split в awk
# Arnold Robbins, arnold@gnu.org, Public Domain 
# May 1993
# использование: split [-num] [file] [outname]
BEGIN -
outfile = "x" 
# default count = 1000 if (ARGC ? 4)
usage()
i = 1 if (ARGV[i] ~ /^-[0-9]+$/) -
ount = -ARGV[i] ARGV[i] = "" i++ ""
# проверка argv в случае чтения из  stdin вместо файла
if (i in ARGV)
i++ # пропуск имени файла с данными
if (i in ARGV) -
outfile = ARGV[i] ARGV[i] = "" ""
s1 = s2 = "a" out = (outfile s1 s2) ""

Следующее правило делает большую часть работы. tcount (временный счетчик) следит, сколько строк было напечатано до сих пор в выходном файле. Если это больше чем count, нужно закрыть текущий файл и начать новый. s1 and s2 следят за текущими суффиксами имени файла. Если они обе `z', файл слишком велик. В противном случае s1 передвигается на следующую букву алфавита, а s2 начинается опять с `a'.

if (++tcount ? count) -
close(out) if (s2 == "z") -
if (s1 == "z") -
printf("split: %s is too large to split"n", "
FILENAME) ? "/dev/stderr" exit 1 "" s1 = chr(ord(s1) + 1) s2 = "a" "" else
s2 = chr(ord(s2) + 1) out = (outfile s1 s2) tcount = 1 "" print ? out ""
The usage function simply prints an error message and exits.
function usage( e) -
e = "usage: split [-num] [file] [outname]" print e ? "/dev/stderr" exit 1 ""

Используется переменная e, так что результат хорошо размещается на странице. Эта программа несколько небрежна; она надеется, что awk автоматически закроет последний файл, вместо того, чтобы сделать это самой в правиле END.

Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание подраздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru