ファイルから関連データを選択する(列および行別)

ファイルから関連データを選択する(列および行別)

以下のようにfile1があります。

0 0
0 1
0 8
ST1 2 3
5 2
2 2
ST3 4 3
4 2
5 5
ST5 1 9
1 5
7 8

必須出力ファイル:

ST1 6 5 2
ST3 12 4 5
ST5 9 1 7

この問題を解決するには? awkを使いたいです。目的の出力のように見えるように、これらの行を処理できるアルゴリズムを作成する方法がわかりません。

パターン(ST)を探してその地点から処理を始めたいという考えだ。

出力ファイルスキーム:ST *、2列に「ST」がある行の3列を掛け、「ST」の下の行の1列を掛けます。ただし、次に「ST」が表示されるまでのみ該当します。

また、最初のST *より前には何も処理したくありません。

ベストアンサー1

何でもawk:

$ awk '/^ST/{c=1} c{ printf "%s", (c++==1? ors $1 OFS $2*$3: OFS $1); ors=ORS } 
  END{ print "" }' infile
ST1 6 5 2
ST3 12 4 5
ST5 9 1 7

おすすめ記事