Разделить файл на n файлов с помощью csplit (или аналогичного инструмента)

Проверяя исходный код (для версии Debian ), он просто масштабирован с использованием целочисленного деления на 24 × 3600 , поэтому он усечен.

Обратите внимание, что полученное вами значение отличается от расчетного ровно на два часа, что, вероятно, можно объяснить изменением часового пояса.

0
17.12.2019, 08:41
1 ответ

Вы можете использоватьawk-не совсем то, что вам нужно, но может помочь.

Идея :напечатать n строк в файл части -, а затем найти следующее вхождение вашего шаблона перед созданием нового файла части -.

Недостатки:

  • Если у вас есть большие блоки и вы просто пропустили начало такого блока, некоторые файлы могут стать намного больше других.
  • Исходный файл не удален (, т. е. требуется вдвое больше места ).
  • Как написано, линия соответствия должна быть точнойABC(нет допуска по сравнению с другими словами в той же строке -можно скорректировать)
  • Работает путем установки количества строк, а не желаемого количества выходных файлов (оценка по номеру строки входного файла)

akw-сценарий

BEGIN{
    outfile="part_"++i
    j=0
    }
{ 
    j++
    #block size set to at least 10 lines in this example
    #if threshold line number reached: search for next keyword,
    #then increase part file name counter and reset line threshold counter
    if ( j>=10 && $0 == "ABC" ) { outfile="part_"++i ; j=0 }
    print > outfile
}

Выполнить через

awk -f script.awk input.txt
1
28.01.2020, 02:38

Теги

Похожие вопросы