Bagaimana saya bisa memformat output grep saya untuk menampilkan nomor baris di akhir baris, dan juga jumlah klik?

378

Saya menggunakan grep untuk mencocokkan string dalam file. Berikut ini contoh file:

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

grep -i null myfile.txt kembali

example two null,
example four null,

Bagaimana saya bisa mengembalikan baris yang cocok bersama dengan nomor baris mereka seperti ini:

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

Saya tahu -c mengembalikan total baris yang cocok, tetapi saya tidak tahu bagaimana memformatnya dengan benar untuk ditambahkan total null countdi depan, dan saya tidak tahu bagaimana cara menambahkan nomor baris.

Apa yang dapat saya?

London
sumber

Jawaban:

600

-n mengembalikan nomor baris.

-iadalah untuk mengabaikan kasus. Hanya untuk digunakan jika pencocokan kasus tidak diperlukan

$ grep -in null myfile.txt

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

Kombinasikan dengan awkuntuk mencetak nomor baris setelah pertandingan:

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

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

Gunakan subtitusi perintah untuk mencetak jumlah nol total:

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

Total null count : 2
dogbane
sumber
dapatkah saya memformat ini dengan menambahkan nomor baris setelah bukannya sebelumnya dengan:?
London
solusi Anda tampaknya baik tetapi mendapatkan kesalahanawk95: syntax error at source line context is >>> ' <<< missing } awk95: bailing out at source line 1
London
maaf beralih ke linux sekarang sudah bekerja :) itu versi windows tidak begitu baik
London
1
... para ksatria yang mengatakan itu adalah -nibagaimana Anda mengingat trik ini
santiago arizti
59

Gunakan -natau --line-number.

Lihat man grepbanyak opsi lainnya.

Andy Lester
sumber
3
pengguna linux baru malas membaca halaman manual. Tetapi jika mereka cukup menggunakan linux, mereka akan terbiasa :) Sangat berguna :)
Dzung Nguyen
19
Tidak selalu malas, (Tapi kadang-kadang), sering kali itu adalah pengguna Linux baru yang kesulitan memahami halaman manual. (Mereka tampak samar)
TecBrat
terkadang halaman manual dapat mengambil banyak halaman. Dan ini sulit dibaca semuanya
Eugen Konkov
7

menggunakan grep -n -i null myfile.txt untuk menampilkan nomor baris di depan setiap pertandingan.

Saya tidak berpikir grep memiliki saklar untuk mencetak jumlah total baris yang cocok, tetapi Anda bisa mem-pipe output grep ke wc untuk mencapai itu:

grep -n -i null myfile.txt | wc -l
jhenninger
sumber
3
-c akan mencetak total garis yang cocok
dpatchery
Kamu benar. Sayangnya itu juga menekan output normal.
jhenninger
7

Atau gunakan awk:

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

grepmenemukan garis dan menampilkan nomor baris, tetapi tidak membiarkan Anda "memprogram" hal-hal lain. Jika Anda ingin menyertakan teks sewenang-wenang dan melakukan "pemrograman" lainnya, Anda dapat menggunakan 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

Atau hanya menggunakan shell (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"
ghostdog74
sumber
3

atau dalam perl (untuk kelengkapan ...):

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

Rujuk tautan ini untuk perintah linux linux http://linuxcommand.org/man_pages/grep1.html

untuk menampilkan no baris, baris kode dan file menggunakan perintah ini di terminal atau cmd Anda, GitBash (Didukung oleh terminal)

grep -irn "YourStringToBeSearch"
Vrushal Raut
sumber
1

Hanya berpikir saya akan sesuatu yang dapat membantu Anda di masa depan. Untuk mencari beberapa string dan nomor baris output dan menelusuri melalui output, ketik:

egrep -ne 'null|three'

akan menunjukkan:

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

egrep -ne 'null|three' | less

akan menampilkan output dalam sesi kurang

HTH Juni

Abe Jujur
sumber