Я ищу способ в Unix разделить файл на два файла по заданному номеру строки.
split -l 100 file_name
близко к тому, что я ищу, но эта команда создает несколько файлов, каждый из 100 строк. Я ищу команду для разделения файла на два файла с заданным номером строки. Есть ли способ сделать это в Unix?
wc
до и входной файл по-прежнему обрабатывается только один раз, как в случае сawk
решением.head
будет прочитано более 100 строк, чтобы найти первые 100 строк для выводаf1.txt
; эти дополнительные байты не будут видныcat
.Используйте
awk
, так что вам нужно сделать всего один проход через входной файл. Далее предполагается, что вы хотите первые 122 строки в первом файле, а остальные во втором.источник
Вы можете использовать
head
иtail
получить обе части:где
K
номер строки иL
количество строк снизу (общее количество строк -K
).(вы можете получить общее количество строк, используя
wc -l file_name
).источник
Вы можете использовать
csplit
(если доступно), чтобы сделать это:разделит файл на две части, одна часть до (и включая) номер строки,
N
а другая часть от номера строкиN+1
до последней строки.Если вы хотите разделить на (но не включая) номер строки
N
:источник
csplit
оптимизирован для этой работы.Оба
head
иtail
имеют параметры для создания строк из «другого» конца файла, чем они могли бы. Итак, у вас есть эти два варианта:или (где NNN на 100 меньше, чем результат
wc -l source.txt
):Вы можете прочитать справочные страницы для своих версий
head
иtail
для получения дополнительной информации.источник
Вы можете использовать «wc», «dc», «head» и «tail». Т.е.
Для простоты использования, вы можете превратить выше в сценарий оболочки.
источник