最後のフィールドを前のフィールドに置き換える

最後のフィールドを前のフィールドに置き換える

次のファイルがあります。

10-04-2022 00:39:13,36707,1455008753,32
11-05-2022 00:39:13,36708,1555008753,26
21-05-2022 00:39:13,36708,1555408753,15
12-06-2022 00:39:13,36709,1655008753

最後のフィールドの値は次の行のランタイムに関連しているので、gnuplotで使用するためにこの方法で下に移動したいと思います。

10-04-2022 00:39:13,36707,1455008753,
11-05-2022 00:39:13,36708,1555008753,32
21-05-2022 00:39:13,36708,1555408753,26
12-06-2022 00:39:13,36709,1655008753,15

ベストアンサー1

単純な awk スクリプトで次のことができます。

awk 'BEGIN {FS=OFS=","} { tmp=$NF; $NF=save; print; save=tmp; }' < input > output

これにより、4番目のフィールドが一時変数に保存され、4番目のフィールドが以前に保存された値に置き換えられ、新しい行が印刷されます。印刷後、次の反復のために4番目のフィールドの前の値を保存します。最初の行では、「save」d値は空で(デフォルトのawk動作)、期待される結果が得られます。

「BEGIN」セクションは、フィールド区切り文字(入力を分割するために使用されます)と出力フィールド区切り文字(行/フィールドを印刷するときに使用されます)をコンマに設定します。ローカルawkのマニュアルページ、さまざまなオンラインリファレンスを参照してください。awkのオープングループ基本仕様もっと学ぶ。

おすすめ記事