Apa cara ekstraksi yang baik katakan, baris 20 -45 dari file teks besar. Tentu saja non-interaktif!
command-line
text-processing
Chris Huang-Leaver
sumber
sumber
awk NR==20,NR==45 textfile
bekerja juga, dan membaca dengan mudah.,
operator jangkauan awk .Lebih sederhana:
Bendera -n menonaktifkan output default. "20,45" membahas baris 20 hingga 45, inklusif. Perintah "p" mencetak baris saat ini. Dan q berhenti setelah mencetak garis.
sumber
q
perintah (semuanya dimulai dari;
) meningkatkan kinerja bagi saya ketika mengekstraksi baris tunggal 26995107 dari file 27169334-line.Ini bukan jawaban tetapi tidak bisa mempostingnya sebagai komentar.
Cara lain (sangat cepat) untuk melakukannya disarankan oleh mikeserv di sini :
Menggunakan file tes yang sama seperti di sini dan prosedur yang sama, berikut adalah beberapa tolok ukur (mengekstraksi baris 1000020-1000045):
mikeserv :
Stefan :
Sejauh ini, ini adalah solusi tercepat dan perbedaannya dapat diabaikan (untuk sekali lulus) (saya mencoba dengan rentang yang berbeda: beberapa baris, jutaan baris dll).
Melakukannya tanpa pipa mungkin menawarkan keuntungan yang signifikan, namun, untuk aplikasi yang perlu mencari beberapa rentang garis dengan cara yang sama, seperti:
... yang mencetak ...
... dan hanya membaca file melalui satu waktu.
Yang lain
sed
/awk
/perl
solusi membaca seluruh file dan karena ini adalah tentang file besar, mereka tidak sangat efisien. Saya melemparkan beberapa alternatif yangexit
atauq
sesuai dengan baris terakhir dalam rentang yang ditentukan:Stefan :
vs.
dkagedal (
sed
):vs.
Steven D :
vs.
sumber
awk NR==1000020,NR==1000045 textfile
di sistem Anda.sumber
python -c 'import fileinput, sys; [sys.stdout.write(line) for nr, line in enumerate(fileinput.input()) if 19 <= nr <= 44]'
juga? :-P Ini adalah sesuatu yang dapat dilakukan Ruby, dengan model Perl, terinspirasi oleh awk / sed, dapat dilakukan dengan mudah.Karena sed dan awk sudah digunakan, berikut adalah solusi perl:
Atau, seperti yang ditunjukkan dalam komentar:
sumber
perl -ne'print if 20..45' textfile