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


13

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

aa
bbb
cccc

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

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

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

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


какое должно быть имя файла?
Рахул Патил

Вы хотите создать файл каждой строки? Я прав?
Рахул Патил

Ответы:


14

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

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

так

split -l 1 inputfile

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


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"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.