Разделить файл на несколько небольших файлов, разделенных символом новой строки

13

Есть ли утилита, которая разбивает файл по символу перевода строки? например, если файл содержит следующие строки,

aa
bbb
cccc

Если я хочу разделить его на 3 файла, желаемый результат будет:

aa, bbbИ cccc(в 3 -х различных файлов)

Я уже проверил splitкоманду, она обрезает файл только по размеру файла, а не по тому, что я хочу.

Если я сам не написал утилиту, есть ли какой-нибудь стандартный инструмент для использования?

маргаритка
источник
какое должно быть имя файла?
Рахул Патил
Вы хотите создать файл каждой строки? Я прав?
Рахул Патил
последовательные имена: unix.stackexchange.com/questions/164903/…
Сиро Сантилли 事件 改造 中心 法轮功 六四 事件

Ответы:

14

Если я что-то упустил, splitразделить на строку, если вы используете -lпереключатель:

   -l, --lines=NUMBER
          put NUMBER lines per output file

так

split -l 1 inputfile

должен делать то, что вы хотите.

don_crissti
источник
4
awk '{print > $0".txt" }'  inputfile

создаст один файл для каждой уникальной строки во входном файле, названном в честь содержимого этих строк (с .txtрасширением). Но имейте в виду, что при достижении предела количества одновременных открытых файлов некоторые awkреализации завершатся неудачно.

Или

awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile

Чтобы иметь пронумерованные выходные файлы.

Рахул Патил
источник
Вы можете захотеть закрыть () выходной файл после его записи, в противном случае вы столкнетесь с максимальным количеством открытых файлов в большинстве реализаций awk.
Стефан Шазелас
не знаю об этом .. ты можешь сделать это для меня? спасибо ..
Рахул Патил
3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
Uwe
источник