Dalam kasus Anda, Anda tidak ingin komputer bekerja keras .. Tetapi jika itu hanya masalah keterbacaan manusia, Anda dapat menggunakan lessmelalui pipa. Itu akan memenuhi layar dan Anda dapat menekan ENTER untuk melihat lebih banyak garis dan quntuk keluar:grep "SomeText" somefile.csv | less
SilentSteel
Jawaban:
240
The -mpilihan adalah mungkin apa yang Anda cari:
grep -m 10 PATTERN [FILE]
Dari man grep:
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines. If the input is
standard input from a regular file, and NUM matching lines are
output, grep ensures that the standard input is positioned to
just after the last matching line before exiting, regardless of
the presence of trailing context lines. This enables a calling
process to resume a search.
Catatan: grep berhenti membaca file setelah jumlah kecocokan yang ditentukan ditemukan!
hai itu mencoba itu pada dasarnya bekerja tetapi tidak tampak seperti grep "berhenti" berpikir setelah dia menemukan 10 baris pertama sepertinya dia terus berpikir dan "menggunakan cpu saya" dan tidak hanya mencetak jika itu benar? thansk
Jas
6
@Jason: ini tampaknya tidak menjadi masalah: grep mengambil 0,005 dengan -m 1dan 1,579 tanpa pada file dengan 10 juta baris di laptop saya.
Grégoire
3
Perpipaan ke dalam tailumumnya akan bekerja, tetapi rusak terutama jika Anda memahami konteks, misalnya grep -A10 PATTERN, menggunakan tailtruncates the context, daripada jumlah hasil. Jawaban ini adalah apa yang saya cari.
dimo414
1
-m 10adalah opsi yang membuat perbedaan ketika menangkap beberapa file! Perpipaan ke kepala tidak akan menampilkan kecocokan di file berikutnya jika ada terlalu banyak kecocokan di file pertama. Terima kasih!
Julien
1
IMHO ini harus ditandai sebagai jawaban yang diterima, karena tidak memerlukan alat lain. BTW lebih mudah untuk mengingat opsi ini ketika mengetahui bahwa itu adalah jalan pintas --max-count
Ini tidak akan memerlukan pencarian seluruh file - itu akan berhenti ketika sepuluh baris pertama yang cocok ditemukan. Keuntungan lain dengan pendekatan ini adalah bahwa akan mengembalikan tidak lebih dari 10 baris bahkan jika Anda menggunakan grep dengan opsi -o.
Misalnya jika file tersebut berisi baris berikut:
112233223344123123
Maka ini adalah perbedaan dalam output:
$ grep -o '1.' file Anda | kepala -n2
11
12
$ grep -m2 -o '1.'
11
12
12
Menggunakan headpengembalian hanya 2 hasil yang diinginkan, sedangkan -m2 mengembalikan 3.
Perhatikan bahwa Anda tidak dapat menggunakan | headpipa saat menggunakan grepdengan -Aatau -B(dan karenanya tidak hanya mencari hasil ( -o), tetapi juga untuk konteks). Dalam hal Anda pergi dengan -mmengatakan grep jumlah baris dengan hasil dikembalikan.
Attila O.
17
Menggunakan head tidak benar-benar menghentikan grep dari menjalankan seluruh file. Menggunakan opsi -m di grep tidak.
LopSae
7
Pendekatan awk:
awk '/pattern/{print; count++; if (count==10) exit}' file
less
melalui pipa. Itu akan memenuhi layar dan Anda dapat menekan ENTER untuk melihat lebih banyak garis danq
untuk keluar:grep "SomeText" somefile.csv | less
Jawaban:
The
-m
pilihan adalah mungkin apa yang Anda cari:Dari
man grep
:Catatan: grep berhenti membaca file setelah jumlah kecocokan yang ditentukan ditemukan!
sumber
-m 1
dan 1,579 tanpa pada file dengan 10 juta baris di laptop saya.tail
umumnya akan bekerja, tetapi rusak terutama jika Anda memahami konteks, misalnyagrep -A10 PATTERN
, menggunakantail
truncates the context, daripada jumlah hasil. Jawaban ini adalah apa yang saya cari.-m 10
adalah opsi yang membuat perbedaan ketika menangkap beberapa file! Perpipaan ke kepala tidak akan menampilkan kecocokan di file berikutnya jika ada terlalu banyak kecocokan di file pertama. Terima kasih!Opsi lain hanya menggunakan kepala :
Ini tidak akan memerlukan pencarian seluruh file - itu akan berhenti ketika sepuluh baris pertama yang cocok ditemukan. Keuntungan lain dengan pendekatan ini adalah bahwa akan mengembalikan tidak lebih dari 10 baris bahkan jika Anda menggunakan grep dengan opsi -o.
Misalnya jika file tersebut berisi baris berikut:
Maka ini adalah perbedaan dalam output:
Menggunakan
head
pengembalian hanya 2 hasil yang diinginkan, sedangkan -m2 mengembalikan 3.sumber
| head
pipa saat menggunakangrep
dengan-A
atau-B
(dan karenanya tidak hanya mencari hasil (-o
), tetapi juga untuk konteks). Dalam hal Anda pergi dengan-m
mengatakan grep jumlah baris dengan hasil dikembalikan.Pendekatan awk:
sumber
Menggunakan ekor:
sumber
Untuk 2 kasus penggunaan:
grep -m 2
adalah per file max kemunculannya.git grep
yang tidak mengambil-m
Alternatif yang baik dalam skenario ini adalah
grep | sed 2q
untuk menangkap 2 kejadian pertama di semua file. dokumentasi sed: https://www.gnu.org/software/sed/manual/sed.htmlsumber