Pisahkan file menjadi beberapa file kecil, pisahkan dengan simbol baris baru

13

Apakah ada utilitas yang membagi file dengan simbol baris baru? misalnya jika file berisi baris berikut,

aa
bbb
cccc

Jika saya ingin membaginya menjadi 3 file, output yang diinginkan adalah:

aa, bbbDan cccc(dalam 3 file berbeda)

Saya sudah memeriksa splitperintah, itu hanya memotong file dengan ukuran file, bukan yang saya inginkan.

Jika saya tidak menulis utilitas sendiri, apakah ada alat standar untuk digunakan?

bunga aster
sumber
apa yang harus nama file?
Rahul Patil
Anda ingin membuat file dari setiap baris? Saya benar?
Rahul Patil
nama sekuensial: unix.stackexchange.com/questions/164903/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

14

Kecuali jika saya melewatkan sesuatu, splitapakah dibagi dengan baris jika Anda menggunakan -lsakelar:

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

begitu

split -l 1 inputfile

harus melakukan apa yang Anda inginkan.

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

akan membuat satu file per baris unik di inputfile yang dinamai berdasarkan isi dari baris tersebut (dengan .txtekstensi). Tetapi berhati-hatilah bahwa ketika batas file terbuka bersamaan tercapai, beberapa awkimplementasi akan gagal.

Atau

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

Untuk memiliki file output bernomor.

Rahul Patil
sumber
Anda mungkin ingin menutup () file output setelah ditulis, jika tidak, Anda akan mencapai batas maksimum jumlah file terbuka dengan implementasi awk terbanyak.
Stéphane Chazelas
tidak sadar akan hal itu .. bisakah kamu melakukan itu untukku? terima kasih ..
Rahul Patil
3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
Uwe
sumber