デフォルトでは、次の内容を含む4つのtxtファイルがあります。
FILE 1
localhost_access_2018-07-19.tar.gz:13
localhost_access_2018-07-20.tar.gz:17
localhost_access_2018-07-21.tar.gz:12
localhost_access_2018-07-22.tar.gz:4
localhost_access_2018-07-23.tar.gz:2
localhost_access_2018-07-24.tar.gz:2905
localhost_access_2018-07-25.tar.gz:10440
localhost_access_2018-07-26.tar.gz:2644
localhost_access_2018-07-27.tar.gz:1896
localhost_access_2018-07-28.tar.gz:1238
localhost_access_2018-07-29.tar.gz:932
FILE 2
localhost_access_2018-06-19.tar.gz:0
localhost_access_2018-06-20.tar.gz:0
localhost_access_2018-06-21.tar.gz:1
localhost_access_2018-06-22.tar.gz:0
localhost_access_2018-06-23.tar.gz:0
localhost_access_2018-06-24.tar.gz:0
localhost_access_2018-06-25.tar.gz:0
localhost_access_2018-06-26.tar.gz:1
localhost_access_2018-06-27.tar.gz:0
localhost_access_2018-07-04.tar.gz:2
localhost_access_2018-07-05.tar.gz:3
localhost_access_2018-07-06.tar.gz:6
localhost_access_2018-07-07.tar.gz:0
localhost_access_2018-07-19.tar.gz:15
など。
4つのファイルのそれぞれには、このような重複した日付がありますが、localhost_access_2018-07-19.tar.gz:15
最後の数字は異なります(以降)。
同じ日付に対して ""を切り取り、local_host_access_
新しいtxtファイルの日付のみを保持し(値と形式を変更せずに).tar.gzを切り捨てる必要があります。
また、同じ日付のすべての値を合計する必要があります。
したがって、4つの異なるファイルに4つの「localhost_access_2018-07-19」日付がある場合は、値.gz:"XYZ"の後にあるすべての数字XYZを合計する必要があります。
例:
localhost_access_2018-07-19.tar.gz:1
localhost_access_2018-07-19.tar.gz:2
localhost_access_2018-07-19.tar.gz:3
localhost_access_2018-07-19.tar.gz:4
新しいファイルから単一のテキスト出力として返す必要があります。
2018-07-19:10
入れた答えで頑張るしかし、より良い解決策(そして説明)があることを願っています。ありがとうございます。
ベストアンサー1
また、次の簡単なawk
方法を試してください。
awk -F"[_.:]" ' # set field separator to "_", ".", or ":"
{SUM[$3] += $NF # sum all trailing fields in array indexed by the date
}
END {for (s in SUM) print s, SUM[s] # print the date and the respective sum
}
' OFS=":" file[123] # set output field separator; have shell expand file names 1 - 3