ファイルのパラメータ値を置き換えて、ここでパラメータファイルを生成します。

ファイルのパラメータ値を置き換えて、ここでパラメータファイルを生成します。

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開発者です)。

おすすめ記事