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>

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 *


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 '^[^:]+'

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.

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.