awk
最初の行にはパラメータ名があり、次の行には値を含むテーブルを含むファイルがあります。または、シェルスクリプトユーティリティを使用して以下を行う方法sed
:
fileXX
各行の名前付き構成ファイルを生成します。- 生成された各構成ファイルの各列の値を1行(行)に置き換えます。
- 各ファイル内のパラメータ名を表す最初の行を転置列値に関連付けて、パラメータ名と値のペアとして表示します。
ソースファイル:
Column1 Column2 Column3
Row1_Col1 Row1_Col2 Row1_Col3
Row2_Col1 Row2_Col2 Row2_Col3
Row3_Col1 Row3_Col2 Row3_Col3
結果ファイル:
ファイル1
Column1=Row1_Col1 Column2=Row1_Col2 Column2=Row1_Col3
ファイル2
Column1=Row2_Col1 Column2=Row2_Col2 Column2=Row2_Col3
ファイル3
Column1=Row3_Col1 Column2=Row3_Col2 Column2=Row3_Col3
ベストアンサー1
厳密な入力検証を含むコマンドを組み込んだ新しいdatamash
コマンドラインプログラム(GNU)を使用できます。transpose
例:
$ cat in.txt
Column1 Column2 Column3
Row1_Col1 Row1_Col2 Row1_Col3
Row2_Col1 Row2_Col2 Row2_Col3
Row3_Col1 Row3_Col2 Row3_Col3
$ datamash transpose < in.txt
Column1 Row1_Col1 Row2_Col1 Row3_Col1
Column2 Row1_Col2 Row2_Col2 Row3_Col2
Column3 Row1_Col3 Row2_Col3 Row3_Col3
その後、列に分割しますcut
。
$ datamash transpose < in.txt | cut -f1,3 | tr '\t' '='
Column1=Row2_Col1
Column2=Row2_Col2
Column3=Row2_Col3
複数のファイルを生成するには、次のコマンドを使用できます。
for i in 2 3 4 ; do
datamash transpose < in.txt | cut -f1,$i | tr '\t' '=' > file$i.txt
done
GNU Datamashはここから入手できます:http://www.gnu.org/s/datamash、パッケージは複数のgnu / linuxディストリビューションで利用できます(免責事項:私はdatamash
開発者です)。