ファイル内の文字列を照合するために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
を追加するように正しくフォーマットする方法がわからず、行番号を追加する方法もわかりません。
私に何ができる?
-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
-n
または--line-number
を使用してください。
もっとたくさんのオプションについてはman grep
を調べてください。
または代わりにawk
を使用してください。
awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file
各一致の前に行番号を出力するには、grep -n -i null myfile.txt
を使用します。
Grepには一致した総行数を表示するように切り替えるスイッチはないと思いますが、それを達成するためにgrepの出力をwcにパイプするだけでいいのです。
grep -n -i null myfile.txt | wc -l
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"
またはPerlでは(完全性のために...)
Perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}'
Linuxコマンドについては、このリンクを参照してください。linux http://linuxcommand.org/man_pages/grep1.html
行番号、コード行、およびファイルを表示するには、端末またはcmdのGitBashでこのコマンドを使用します(Powered by terminal)
grep -irn "YourStringToBeSearch"
私は将来あなたを助けるかもしれない何かと思いました。複数の文字列と出力行番号を検索し、出力全体を閲覧するには、次のように入力します。
egrep -ne 'null | three'
表示されます:
2:2つの例のnull、
3:例3、
4:例4つnull
egrep -ne 'null | three' |もっと少なく
少ないセッションで出力を表示します
HTH 6月