Grep'ten satır numarası nasıl alınır?


19

Aşağıdaki grep

grep -r -e -n coll *

gösterecek

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

Aşağıdaki metnin hangi satırda olduğunu bilmek istiyorum, eklemeyi denedim -n, ama işe yaramadı. Eklemeyi denedim | grep -n *, ama garip bir şey yaptı.

Görmek istediğim (format umurumda değil)

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

1
-nSeçeneği kullanırken satır numaralarını görüyorum . Aldığınız çıktıyı gönderebilir misiniz?
Kris Harper

Yanıtlar:


18

-eSeçenekler listesinin sonuna koymalısınız :grep -rne coll *


16

-r & -e gerek yok!

Bir desenin satır numarasını alın!

grep -n "pattern" file.txt

çıkış olarak yalnızca satır numarasını almak istiyorsanız, ona başka bir grep komutu ekleyin!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
Sadece satır numarasını almak için kullanımı daha kolaydır cut, örneğincut -f1 -d:
wjandrea

1

Belirli bir dosyada bir desen grep ve eşleşen satırları almak için:

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

veya cut@wjandrea tarafından önerildiği gibi kullanarak :

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

nerede

  • <Pattern>tırnak içine alınmış bir glob paternidir (normal ifade için kullanım seçeneğini kullanın -E);
  • <File> ilgilendiğiniz dosya;
  • ilk boru awk ...grep çıktısındaki satır numaralarını filtreler (daha önce :her satırda);
  • ikinci boru, satır numaralarının yalnızca bir kez görünmesini sağlar.

Sadece satır numarasını almak için cut, cut -f1 -d:
Awk'den

@wjandrea Hangi açıdan daha kolay?
Sheljohn

Yani sözdizimi daha basit
wjandrea

@wjandrea Kulağa çok objektif geliyor.
Sheljohn

@wjandrea Alay için özür dilerim, önerinizi eklemek için düzenledim :)
Sheljohn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.