特定のコマンドの出力から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