Saya mencoba mencari direktori rel saya menggunakan grep. Saya mencari kata tertentu dan saya ingin grep mencetak nama file dan nomor baris.
Apakah ada bendera grep yang akan melakukan ini untuk saya? Saya telah mencoba menggunakan kombinasi -n
dan -l
tetapi ini baik mencetak nama file tanpa nomor atau hanya membuang banyak teks ke terminal yang tidak dapat dengan mudah dibaca.
ex:
grep -ln "search" *
Apakah saya perlu menyalurkannya ke awk?
Jawaban:
Saya pikir
-l
terlalu membatasi karena menekan output-n
. Saya menyarankan-H
(--with-filename
): Cetak nama file untuk setiap pertandingan.grep -Hn "search" *
Jika hasilnya terlalu banyak, coba
-o
cetak hanya bagian yang cocok.grep -nHo "search" *
sumber
Ini akan mengatakan, telusuri secara rekursif (untuk string
searchstring
dalam contoh ini), abaikan huruf besar / kecil, dan tampilkan nomor baris. Output dari grep itu akan terlihat seperti:Selanjutnya kami menyalurkan hasil ke perintah cut menggunakan titik dua
:
sebagai pembatas bidang kami dan menampilkan bidang 1 hingga 2.Ketika saya tidak membutuhkan nomor baris yang sering saya gunakan
-f1
(hanya nama file dan jalur), lalu menyalurkan output keuniq
, sehingga saya hanya melihat setiap nama file satu kali:sumber
Saya suka menggunakan:
grep -niro 'searchstring' <path>
Tapi itu hanya karena saya selalu melupakan cara lain dan saya tidak bisa melupakan Robert de
grep -
niro karena suatu alasan :)sumber
Komentar dari @ToreAurstad bisa dibilang
grep -Horn 'search' ./
lebih gampang diingat.grep -HEroine 'search' ./
bisa juga bekerja;)Bagi yang penasaran:
sumber
Inilah cara saya menggunakan jawaban upvoted untuk mencari pohon untuk menemukan file fortran yang berisi string:
Tanpa nHo, Anda hanya belajar bahwa beberapa file, di suatu tempat, cocok dengan string.
sumber