Pertanyaan Grep mencantumkan nama file dan nomor baris


Hai Saya mencoba mencari direktori rel saya menggunakan grep. Saya mencari kata tertentu dan saya ingin grep untuk mencetak nama file dan nomor baris. Apakah ada bendera hijau 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?


59
2017-11-12 16:15


asal


Jawaban:


kupikir -l terlalu membatasi karena menekan output -n. saya akan menyarankan -H (--with-filename): Cetak nama file untuk setiap pertandingan.

grep -Hn "search" *

Jika itu memberi terlalu banyak output, cobalah -o hanya mencetak bagian yang cocok.

grep -nHo "search" * 

92
2017-11-12 16:36



grep -rin searchstring * | cut -d: -f1-2

Ini akan mengatakan, cari secara rekursif (untuk string searchstring dalam contoh ini), mengabaikan kasus, dan menampilkan nomor baris. Output dari grep itu akan terlihat seperti ini:

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

Selanjutnya kita pipa yang menghasilkan perintah pemotongan menggunakan titik dua : sebagai pemisah bidang kami dan menampilkan bidang 1 hingga 2.

Ketika saya tidak membutuhkan nomor baris yang sering saya gunakan -f1 (hanya nama file dan path), dan kemudian pipa output ke uniq, sehingga saya hanya melihat satu nama file satu kali:

grep -ir searchstring * | cut -d: -f1 | uniq

24
2017-07-19 17:55



Saya suka menggunakan:

grep -niro 'searchstring' <path>

Tapi itu hanya karena saya selalu lupa dengan cara lain dan saya tidak bisa melupakannya Robert de grep - niro untuk beberapa alasan :)


6
2017-10-26 14:04