分析を実行するために「dsk」というプログラムを使用しています。私はほんの数行の分析に興味があり、以下を使用してその行を検索します。
dsk -file <filename> | grep -Ei 'string1|string2|string3'
これは私に次のようなものを与えます:
string1 : 13
string2 : 46
string3 : 39
*編集:より現実的な出力のためにフォーマットが変更されました(タブ制限なし、32個のスペース、コロン、フィールド間の別のスペース)。
しかし、私は出力が次のようになりたいと思います。
string1 string2 string3
13 46 39
Glennが提供した答えは、次の結果を生成します。おそらく空白が混乱を引き起こすからです。
string1 string2 string3
: : :
答え1
答え2
@SteelDriverがリンクした回答に記載されている一般的なツールは、@glenn jackmanの回答と同様に完璧です。
ただし、データ型が指定したように単純な場合、つまりフラグメントにスペースがない場合は、string1 .. stringN
入力ファイルを2回読み取るのではなく、次のこともできます。
dsk -file <filename> | grep -Ei 'string1|string2|string3' > tempfile.txt
readarray labels < <(awk '{print $1}' tempfile.txt)
readarray values < <(awk '{print $2}' tempfile.txt)
printf '%s\t' ${labels[@]}
printf '\n'
printf '%s\t' ${values[@]}
printf '\n'
この形式はかなり単純な場合があり、特に必要に応じてアイテムを並べ替えることはできません。しかし、必要なものがタブ区切りの出力だけであれば、そうします。