列の値を計算しますが、一致するパターンが最初に発生した後の行のみを考慮します。

列の値を計算しますが、一致するパターンが最初に発生した後の行のみを考慮します。

特定のコマンドの出力から2番目の列の値を計算する必要があります。しかし、問題は、特定のパターンを含む行の後の行を考慮するだけです。例:
コマンド出力(ptree) -

1234話
   3342枚/空/ユーザー/123/loc
      7783ディナー
         1234アルファベットAAA1 BBB1 CCC1 D444
         0909アルファベットxx11 SD11 lk23 3484
         8383現在のuh9u 38tt kj33 SD99
         3030ジズqq11 11ii 39ii ij33
         0101監督者kk88 sis8 88si mm92
         1020zz098df cv99子供8dhd
         1111監督者9ike 39ei 93je 39de

最初に表示される sup (3 番目の行) を探し、3 番目の行 (類似した値をグループ化するため) の後、2 番目の列 (太字で表示) のすべての値を計算しようとしています。 'sup'が最初に発生する前の行数は固定されておらず、いつでも変更される可能性があります(したがって3にハードコードできません)。

出力は次のようにする必要があります -

abc 2  
cur 1  
zzz 1  
sup 2  
zz0 1  

誰もがこれを行う最良の方法を提案できますか?

ベストアンサー1

この試み、

 sed -e '1,/sup/d;/^[0-9]/,$d' file.txt | awk 'NF>=3{ a[$2]++ } END { for (n in a) print n, a[n] }'
  • 1,/sup/d古いコンテンツをすべて削除します。sup
  • /^[0-9]/,$d後ろに他のプロセスがある場合は削除されます。sup

おすすめ記事