
次のテーブルがあるとしましょう。
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 )
。