Есть ли утилита, которая разделяет файл по символу новой строки? Например, если файл содержит следующие строки:
aa
bbb
cccc
Если я захочу разделить его на 3 файла, желаемый результат будет таким:
aa
, bbb
И cccc
(в 3 разных файлах)
Я уже проверил split
команду, она обрезает только файлы по размеру, а не по тому, что мне нужно.
Если я не пишу утилиту сам, есть ли какой-то стандартный инструмент, который можно использовать?
решение1
Если я ничего не упускаю, split
разделяет ли он по строкам, если использовать -l
switch:
-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"