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

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

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

aa
bbb
cccc

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

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

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

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

решение1

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

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

так

split -l 1 inputfile

должен делать то, что хочешь.

решение2

awk '{print > $0".txt" }'  inputfile

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

Или

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

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

решение3

A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"

Связанный контент