テーブルに行を追加する

テーブルに行を追加する

までのtable.txt時系列を含むプレーンテキストテーブル()がいくつかあります。残念ながら、そのうちのいくつかは、次のように時系列の最後の日が欠落しています。2005209931.12.2099

YEAR MONTH DAY RES
2005 1     1   1000
2005 1     2   1001
[...]
2099 12    29  1002
2099 12    30  1003

前日の値()を貼り付けて時31.12.2099系列()に欠落している日付を追加するには?RES提供された最小例を考慮すると、出力は次のようになります。

YEAR MONTH DAY RES
2005 1     1   1000
2005 1     2   1001
[...]
2099 12    29  1002
2099 12    30  1003
2099 12    31  1003

ベストアンサー1

そしてawk

awk '{a=$0}1; END{$0=a; if($1==2099&&$2==12&&$3==30){$3=31;print}}' file | column -t
  • r=$0変数をa完全な行に設定します。
  • 1すべての行の実際の条件を印刷します。
  • END{...}すべての行が処理されたら、このブロックを実行します。
    • $1==2099&&$2==12&&$3==30最後の行が2099年12月30日の場合(13行目がありません)
    • $3=31日付を次に設定してください。31
    • print追加の行を印刷します。
  • column -tリストを整理することです。

入力ファイルの結果:

YEAR  MONTH  DAY  RES
2005  1      1    1000
2005  1      2    1001
...
2099  12     29   1002
2099  12     30   1003
2099  12     31   1003

おすすめ記事