Bagaimana cara mendapatkan nomor baris dari grep?

18

Grep berikut

grep -r -e -n coll *

akan ditampilkan

fullpath/filename:  <tag-name>coll</tag-name>

Saya ingin tahu baris apa yang memiliki teks berikut, saya mencoba menambahkan -n, tetapi tidak berhasil. Saya mencoba menambahkan | grep -n *, tetapi itu melakukan sesuatu yang aneh.

Apa yang ingin saya lihat (saya tidak peduli tentang format) adalah

fullpath/filename:10:  <tag-name>coll</tag-name>
UAdapter
sumber
1
Saya melihat nomor baris saat menggunakan -nopsi. Bisakah Anda memposting output dari apa yang Anda dapatkan?
Kris Harper

Jawaban:

18

Anda harus meletakkan -edi akhir daftar opsi:grep -rne coll *

lgarzo
sumber
15

tidak perlu untuk -r & -e!

dapatkan nomor garis dari suatu pola!

grep -n "pattern" file.txt

jika Anda hanya ingin mendapatkan nomor baris sebagai output tambahkan perintah grep lain untuk itu!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'
Jonah
sumber
1
Untuk mendapatkan hanya nomor baris, lebih mudah digunakan cut, misalnyacut -f1 -d:
wjandrea
1

Untuk menerima pola dalam file tertentu, dan mendapatkan garis yang cocok:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

atau menggunakan cutseperti yang disarankan oleh @wjandrea:

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

dimana

  • <Pattern>adalah pola glob yang dikutip (gunakan opsi -Euntuk regexp);
  • <File> adalah file yang Anda minati;
  • pipa pertama awk ...menyaring nomor baris dalam output grep (sebelum :pada setiap baris);
  • pipa kedua memastikan bahwa nomor baris hanya muncul sekali.
Sheljohn
sumber
Untuk mendapatkan hanya nomor baris, lebih mudah digunakan cutdaripada Awk, misalnyacut -f1 -d:
wjandrea
@wjandrea Lebih mudah dengan cara apa?
Sheljohn
Maksud saya sintaksinya lebih sederhana
wjandrea
@wjandrea Kedengarannya sangat objektif.
Sheljohn
@wjandrea Maaf untuk sarkasme, saya diedit untuk memasukkan saran Anda :)
Sheljohn