Grep çıktımı satırın sonundaki satır numaralarını ve ayrıca isabet sayısını gösterecek şekilde nasıl biçimlendirebilirim?


378

Bir dosyadaki dizeyi eşleştirmek için grep kullanıyorum. İşte bir örnek dosya:

example one,
example two null,
example three,
example four null,

grep -i null myfile.txt İadeler

example two null,
example four null,

Eşleşen satırları aşağıdaki gibi satır numaralarıyla birlikte nasıl döndürebilirim:

  example two null, - Line number : 2
  example four null, - Line number : 4
  Total null count : 2

Ben -c toplam eşleşen satırları döndürür biliyorum, ama total null countönünde eklemek için düzgün biçimlendirmek için nasıl bilmiyorum ve satır numaraları eklemek için nasıl bilmiyorum.

Ne yapabilirim?

Yanıtlar:


600

-n satır numarasını döndürür.

-igörmezden gelmek içindir. Yalnızca büyük / küçük harf eşleştirmesi gerekmiyorsa kullanılmalıdır

$ grep -in null myfile.txt

2:example two null,
4:example four null,

awkMaçtan sonra satır numarasını yazdırmak için ile birleştirin :

$ grep -in null myfile.txt | awk -F: '{print $2" - Line number : "$1}'

example two null, - Line number : 2
example four null, - Line number : 4

Toplam null sayımı yazdırmak için komut ikamesini kullanın:

$ echo "Total null count :" $(grep -ic null myfile.txt)

Total null count : 2

aşağıdakilerden önce yerine satır numaraları ekleyerek bunu biçimlendirebilir miyim?
— Londra

çözümün iyi görünüyor ama bir hata alawk95: syntax error at source line context is >>> ' <<< missing } awk95: bailing out at source line 1
— Londra

üzgünüm şimdi çalışma linux geçti :) windows sürümü çok iyi değildi
— Londra

1
... -nibu hileyi nasıl hatırladığını söyleyen şövalyeler
— santiago arizti

59

-nVeya tuşunu kullanın --line-number.

man grepDaha fazla seçenek için göz atın .


3
Yeni linux kullanıcısı, man sayfasını okuma konusunda tembeldir. Ama yeterince linux kullanıyorlarsa, buna
— alışacaklar

19
Her zaman tembel değil, (Ama bazen), genellikle yeni bir Linux kullanıcısının bir man sayfasını anlamakta zorlanmasıdır. ( Şifreli görünebilirler )
— TecBrat

bazen man sayfası birçok sayfa alabilir. Ve bu hepsini okumak zor
— Eugen Konkov

7

grep -n -i null myfile.txther maçın önündeki satır numarasını çıkarmak için kullanın .

Ben grep eşleşen toplam satır sayısını yazdırmak için bir anahtarı olduğunu sanmıyorum, ama sadece bunu gerçekleştirmek için wc içine grep çıktı boru:

grep -n -i null myfile.txt | wc -l

3
-c eşleşen toplam satırları yazdıracak
— dpatchery

Haklısın. Ne yazık ki normal çıktıyı da bastırır.
— jhenninger

7

Veya awkbunun yerine kullanın:

awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file

4

grepsatırları bulmak ve satır numaralarını çıktı, ama başka şeyler "programlamak" izin vermez. Rasgele metin eklemek ve başka bir "programlama" yapmak istiyorsanız, awk,

$ awk '/null/{c++;print $0," - Line number: "NR}END{print "Total null count: "c}' file
example two null,  - Line number: 2
example four null,  - Line number: 4
Total null count: 2

Veya yalnızca kabuğu kullanarak (bash / ksh)

c=0
while read -r line
do
  case "$line" in
   *null* )  (
    ((c++))
    echo "$line - Line number $c"
    ;;
  esac
done < "file"
echo "total count: $c"

3

veya perl'de (bütünlük için ...):

perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}'

2

Linux komutu linux için bu bağlantıya bakın http://linuxcommand.org/man_pages/grep1.html

satır numarasını, kod satırını ve dosyayı görüntülemek için bu komutu terminalinizde veya cmd'nizde kullanın, GitBash (Terminal tarafından desteklenmektedir)

grep -irn "YourStringToBeSearch"

1

Sadece gelecekte size yardımcı olabilecek bir şey yapacağımı düşündüm. Birden fazla dize ve çıktı satırı numarası aramak ve çıktıya göz atmak için şunu yazın:

egrep -ne 'null|three'

gösterecek:

2:example two null,  
3:example three,  
4:example four null,   

egrep -ne 'null|three' | less

daha az oturumda çıktı görüntüler

HTH Haziran

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.