シェルから別の列で構成される列グループの出力

シェルから別の列で構成される列グループの出力

よろしくお願いします!

次の3つの列を持つファイルがあります。

serv1   red     group1
serv1   black   group1
serv1   orange  group1
serv1   red     group2
serv1   orange  group2
serv1   red     group3
serv1   black   group3
serv1   orange  group3
serv2   orange  group1
serv2   red     group2
serv2   orange  group2
serv2   red     group3
serv2   black   group3
serv2   orange  group3
serv3   orange  group1
serv3   red     group1

私はそれを次のように見せます:

serv1   group1  red black   orange
serv1   group2  red orange
serv1   group3  red black   orange
serv2   group1  orange
serv2   group2  red orange
serv2   group3  red black   orange
serv3   group1  orange  red

最初のコードと次のコードでグループ化しようとすると問題はありませんが、複数のコードをグループ化することはできません。

awk '{ V_GRUPO[$1]= (V_GRUPO[$1]==""?"":V_GRUPO[$1] OFS) $2 }END  { for(x in V_GRUPO) print x, V_GRUPO[x] }' file.txt
serv1   red black   orange red  orange  red black   orange
serv2   orange  red orange  red black   orange
serv3   orange  red

¿どうしたの? ? ?

ありがとうございます! !

ベストアンサー1

入力のフィールドが複数の空白(ある種の「きれいな印刷テーブル」形式)に分割されており、2番目のフィールドの項目を他の2つのフィールドに基づいてスペースで区切られたリストに縮小したいとします。

$ mlr --pprint -N nest --ivar ' ' -f 2 then reorder -f 1,3,2 file
serv1 group1 red black orange
serv1 group2 red orange
serv1 group3 red black orange
serv2 group1 orange
serv2 group2 red orange
serv2 group3 red black orange
serv3 group1 orange red

これは、以下を使用して元のフィールドを縮小して並べ替えます。ミラーmlr)。

データがタブで区切られ(TSV)、タブで区切られた出力が必要な場合--pprintに変更します--tsv。折りたたまれたデータのリストに別の区切り文字を必要--ivar ' 'に応じて変更します(例--ivar ';':使用;)。

たとえば、タブで区切られた入力と出力の場合は、;リスト区切り記号として使用します。

$ mlr --tsv -N nest --ivar ';' -f 2 then reorder -f 1,3,2 file
serv1   group1  red;black;orange
serv1   group2  red;orange
serv1   group3  red;black;orange
serv2   group1  orange
serv2   group2  red;orange
serv2   group3  red;black;orange
serv3   group1  orange;red

TSV入力を読み取り、各フィールドにラベルを追加し、数値フィールドの代わりに対応するラベルを使用し、素敵に印刷された表形式の出力を生成する別の例:

$ mlr --itsv --implicit-csv-header --opprint --barred label Server,Colour,Group then nest --ivar ';' -f Colour then reorder -f Server,Group,Colour file
+--------+--------+------------------+
| Server | Group  | Colour           |
+--------+--------+------------------+
| serv1  | group1 | red;black;orange |
| serv1  | group2 | red;orange       |
| serv1  | group3 | red;black;orange |
| serv2  | group1 | orange           |
| serv2  | group2 | red;orange       |
| serv2  | group3 | red;black;orange |
| serv3  | group1 | orange;red       |
+--------+--------+------------------+

おすすめ記事