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


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

Мати нумеровані вихідні файли.


Можливо, ви захочете закрити () вихідний файл після його написання, інакше ви зіткнетеся з максимальною кількістю відкритих файлів з більшості дивних реалізацій.
Стефан Шазелас

не знаю цього .. ти можеш це зробити для мене? дякую ..
Рахул Патіл

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.