スプレッドシートスタイルの操作にawkを使用する

スプレッドシートスタイルの操作にawkを使用する

データファイルがあります。

1
2
3
4

それでは、最初と2番目の数字、2番目と3番目の数字などを追加してデータファイルを受け取りたいと思います。

1 
2 3
3 5
4 7

その後、最初の行を削除して次のようにします。

2 3
3 5
4 7

スプレッドシートも使用できましたが、フローティングにはgnuplotを使用する必要があります。だから私は本当にこの作業にawkを使用したいと思います。

答え1

これは実際にawk。デフォルトでは、awk入力ファイルを読み取り、各行に指定したスクリプトを適用します。スペースに基づいて行を分割し(デフォルトでを使用して別の区切り文字を選択できます-F)、最初のフィールドは$1、2番目のフィールドは$2などになります。

これを念頭に置いて、必要なのは、i)前の行の値を変数に保存し、ii)前の値がある場合(したがってこれが最初の行ではない場合)、現在の値を印刷する簡単なスクリプトです。最初のフィールドに最後の行と現在の最初のフィールドを加えた値。つまり、これは次のようになります。

$ awk '{if(last){print $1, $1+last;} last=$1}' file 
2 3
3 5
4 7

または等しく

awk 'last != "" { print $1, $1 + last } { last = $1 }' file

または、

awk 'NR > 1 { print $1, $1 + last } { last = $1 }' file

関連情報