awkを使用してSQLテーブルの列を1行に印刷するには?

awkを使用してSQLテーブルの列を1行に印刷するには?

次のテーブルがあるとしましょう。

This is first line
name                                minimum     maximum     config_value 
----------------------------------- ----------- ----------- ------------ 
some text goes here for sample                0           1            0 
Output Ends

出力は2番目の列と同じでなければなりません。

minimum    
----------- 
          0

そのような出力を生成するawkコマンドは何ですか?

答え1

awk重要な要件ではない場合は、ファイルcutを固定バイトに分割してgrep空白行を削除できます。

cut -b 37-47 data | grep -v '^$'

答え2

私はawkの専門家ではありませんが、出力が常に同じである場合(つまり、2行目はヘッダー、3行目は結果を含む)、次のように使用できます。

cat /tmp/test.txt | awk 'NR==2 {headers=$0; start=0; len=0} NR==3 { start=index($0," "); len=length($2)+1; print substr(headers,start,len) ; print substr($0,start,len)} NR==4 {print substr($0,start,len)}'

長さで区切られたフィールドなので、NR==3「アンダースコア」行()を読み取ると、フィールドの開始インデックスと長さがわかります。

SQLが複数の行を返す場合は、次のようなものを使用する必要がありますif( NR > 1 && NR <= x )

関連情報