web-dev-qa-db-ja.com

Grep出力をフォーマットして行末の行番号とヒット数を表示するにはどうすればよいですか?

ファイル内の文字列を照合するためにgrepを使用しています。これがファイルの例です。

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

grep -i null myfile.txtが返す

example two null,
example four null,

このように、一致した行を行番号とともに返すにはどうすればよいですか。

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

-cが一致した行の合計を返すことは知っていますが、先頭にtotal null countを追加するように正しくフォーマットする方法がわからず、行番号を追加する方法もわかりません。

私に何ができる?

332
London

-nは行番号を返します。

-iは無視するためのものです。ケースマッチングが不要な場合にのみ使用されます

$ grep -in null myfile.txt

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

awkと組み合わせて、一致後の行番号を表示します。

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

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

コマンド置換を使用して、合計ヌル数を出力します。

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

Total null count : 2
530
dogbane

-nまたは--line-numberを使用してください。

もっとたくさんのオプションについてはman grepを調べてください。

51
Andy Lester

または代わりにawkを使用してください。

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

各一致の前に行番号を出力するには、grep -n -i null myfile.txtを使用します。

Grepには一致した総行数を表示するように切り替えるスイッチはないと思いますが、それを達成するためにgrepの出力をwcにパイプするだけでいいのです。

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

grepは行を見つけて行番号を出力しますが、他のものを「プログラム」することはできません。任意のテキストを含めて他の「プログラミング」をしたい場合は、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

またはシェルのみを使用(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
ghostdog74

またはPerlでは(完全性のために...)

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

Linuxコマンドについては、このリンクを参照してください。linux http://linuxcommand.org/man_pages/grep1.html

行番号、コード行、およびファイルを表示するには、端末またはcmdのGitBashでこのコマンドを使用します(Powered by terminal)

grep -irn "YourStringToBeSearch"
1
Vrushal Raut

私は将来あなたを助けるかもしれない何かと思いました。複数の文字列と出力行番号を検索し、出力全体を閲覧するには、次のように入力します。

egrep -ne 'null | three'

表示されます:
2:2つの例のnull、
3:例3、
4:例4つnull

egrep -ne 'null | three' |もっと少なく

少ないセッションで出力を表示します

HTH 6月

0
Honest Abe