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.