データファイルがあります。
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