だから私はlast > lastloggedin
最後のシステム再起動以降のクラスの最後のログインを示すファイルを作成するように言われました、そして今私は文字列myawk
をlastloggedin
含む行数を数える/決定する という名前のAwkスクリプトを書くように求められますCFS264
。
終わったよ grep -c CFS264 lastloggedin
grep -c (something) (something) | wc -l
う、常に "1"を生成。
だから私はlast > lastloggedin
最後のシステム再起動以降のクラスの最後のログインを示すファイルを作成するように言われました、そして今私は文字列myawk
をlastloggedin
含む行数を数える/決定する という名前のAwkスクリプトを書くように求められますCFS264
。
終わったよ grep -c CFS264 lastloggedin
grep -c (something) (something) | wc -l
う、常に "1"を生成。
回答:
はじめに、次のawk
ような文字列を含むファイル内の行を検索するために使用できます。
$ awk '/CFS264/ { .... }' lastloggedin
のビットは、{ .... }
その文字列で行数を集計するために必要なコマンドになります。上記が機能していることを確認するにはprint $0
、そこでa を使用して、検索文字列を含む行を出力するだけです。
$ awk '/CFS264/ { print $0 }' lastloggedin
あなたは「awkのカウンタ」を検索した場合、カウントに、あなたは題したこのSO Q&Aつまずくます:レコードの何をカウントするのawkを使用していません。ここに示されている方法は、あなたが説明することには十分です。
$ awk '/CFS264/ {count++} END{print count}' lastloggedin
$ last > lastloggedin
$ awk '/slm/ {count++} END {print count}' lastloggedin
758
$ grep slm lastloggedin | wc -l
758
$ grep -c slm lastloggedin
758
注: CFS264が関連するフィールドはlast
出力に含まれていません。それがユーザー名であると仮定すると、awk
次のようにそのフィールドのみを検索するようにコマンドをさらに制限できます。
$ awk '$1=="CFS264" { print $0 }' lastloggedin
awk
ます。
次の例では、lastloggedin
ファイルを必要とせずに言及された回数をカウントしています。
$ last | awk '$1=="yeti" { ++count } END { print count }'
106
このlastloggedin
ファイルの使用を強制したり、強制的に使用したりする場合は、次の方法で行うことができます。
$ last > lastloggedin
$ awk '$1=="yeti" { ++count } END { print count }' lastloggedin
106
$1~/some_chars/
指定された文字を含むすべてのユーザー名を取得するか$1~/^prefix/
、次で始まる名前のみに一致させるために使用しますprefix
。
$ last | awk '$1~/et/ { ++count } END { print count }'
106
$ last | awk '$1~/^ye/ { ++count } END { print count }'
106
man awk
さらにヒントをスキャン... ;-)
awk
非常にやりがいがあります。非常に短い時間で多くのことができるようになります...
awk
か?そうでない場合は、を使用できますgrep -c CFS264 lastloggedin | wc -l
。