次の行を取得するには、awkを使用してください

次の行を取得するには、awkを使用してください

Bashで積分を計算しようとしています。

以下を含む「data.log」ファイルがあります。

x1 y1
x2 y2
x3 y3
...
xn yn

awkを使用してこのファイルを作成しました。今私はそれを操作して次のものを取得したいと思います。

x2 x1 y2
x3 x2 y3
x4 x3 y4
...
xn xn-1 yn

私は以前試しました:

awk 'var=$1; print var; prev=var;' data.log

しかし、それはうまくいきませんでした。私を助けてくれますか?ありがとう

答え1

最初の行の後には、すべての行の最初のフィールドを記憶しながら、現在の値と前の値を印刷します。

awk 'NR > 1 { print $1, prev, $2 } { prev = $1 }'

これは生産します

$ for i in {1..4}; do printf "x%d y%d\n" $i $i; done | awk 'NR > 1 { print $1, prev, $2 } { prev = $1 }'
x2 x1 y2
x3 x2 y3
x4 x3 y4

関連情報