各行に異なるデータを出力する方法は?

各行に異なるデータを出力する方法は?

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

File: ‘./Payment_Volume_and_Value_Report_000000501C5_2.10_2022_11_14_06_24_49.xml’
Modify: 2022-11-14 06:24:54.466847421 -0500
Change: 2022-11-14 06:25:02.166883414 -0500
  File: ‘./Payment_Volume_and_Value_Report_000000501C5_2.9_2022_11_14_06_24_54.xml’
Modify: 2022-11-14 06:24:54.740847211 -0500
Change: 2022-11-14 06:25:02.166883414 -0500
  File: ‘./Payment_Volume_and_Value_Report_000000501C5_2022_11_14_06_24_54.xml’
Modify: 2022-11-14 06:24:54.637847290 -0500
Change: 2022-11-14 06:25:02.166883414 -0500 

各ファイルの出力が次のようになります。

Payment_Volume_and_Value_Report_000000501C5_2.10_2022_11_14_06_24_49.xml
06:24:54
06:25:02

可能であれば、最後に表示された2時間の差を計算したい(変更 - 修正)。

Payment_Volume_and_Value_Report_000000501C5_2.10_2022_11_14_06_24_49.xml
00:00:08

ベストアンサー1

使用そしてGNUdateコマンド:

while read -r attr data; do
    [[ $attr == File: ]] && echo "$data"
    [[ $attr == Modify: ]] && m="$data"
    if [[ $attr == Change: ]]; then
        c="$data"
        c_epoch=$(date -d"$c" +%s)
        m_epoch=$(date -d"$m" +%s)
        echo "$((c_epoch - m_epoch)) seconds"
     fi
done < file

出力:

‘./Payment_Volume_and_Value_Report_000000501C5_2.10_2022_11_14_06_24_49.xml’
8 seconds
‘./Payment_Volume_and_Value_Report_000000501C5_2.9_2022_11_14_06_24_54.xml’
8 seconds
‘./Payment_Volume_and_Value_Report_000000501C5_2022_11_14_06_24_54.xml’
8 seconds 

おすすめ記事