2

私は OpenMP を試しています。各スレッドが出力する行数をカウントする小さなシェル スクリプトを作成しようとしています。そして、各カウントを吐き出すだけです。私はそれに取り組み始め、ハードコーディングされた、またはパラメーター化された上限と grep -c REG_EX のいずれかを使用して for ループを作成する必要があり始めました。しかし、それは私が望むように機能していません

EXAMPLE PROGRAM OUT(SCRIPT INPUT)

Output to STDOUT (I can obviously pipe into sort first):
Thread 0: EXTRA OUTPUT
Thread 0: EXTRA OUTPUT
Thread 2: EXTRA OUTPUT
Thread 3: EXTRA OUTPUT
Thread 0: EXTRA OUTPUT
Thread 1: EXTRA OUTPUT
.
.
.

必要なのは次のとおりです。

Thread 0: #repeats
Thread 1: #repeats
.
.
.
Thread n: #repeats

前もって感謝します

4

6 に答える 6

0

パターンに一致しない行を取得するには、次を使用します

grep -v 'pattern' file

する行を取得するには、

grep 'pattern' file

カウントする、

grep -v 'foo' bar.txt | wc -l (「foo」に一致しない行の数)

grep 'foo' bar.txt | wc -l (「foo」に一致する行の数)

これはタイトルが求めているもののようですが、認めざるを得ません、あなたの投稿は私を混乱させました

于 2013-05-14T00:06:25.890 に答える
0

必要なのは awk だけです:

<infile awk '{ h[$1" "$2]++ } END { for(k in h) print k, h[k] }'

出力:

Thread 0: 3
Thread 1: 1
Thread 2: 1
Thread 3: 1

"Thread" で始まる行だけを数えたい場合は、次のように最初のブロックを先頭に追加します$1 == "Thread" { h[$1" "$2]++ } ...

于 2013-05-14T07:22:42.547 に答える