【Shell】对文本timestamp进行时间/时区转换2

#!/bin/bash

# 从data_validation.txt文件中提取需要处理的行,并将结果保存到temp.txt文件中
grep -E "ORACLEDB|POSTGRES" data_validation.txt > temp.txt

# 逐行读取temp.txt文件
while IFS= read -r line; do
  # 提取倒数第二列的时区信息
  timezone=$(echo "$line" | awk -F '|' '{print $3}' | awk '{print substr($0, length($0) - 8, 3)}')

  # 提取ORACLEDB行的时间戳
  if [[ $line == *"ORACLEDB"* ]]; then
    oracle_timestamp=$(echo "$line" | awk -F '|' '{print $3}')
  fi

  # 提取POSTGRES行的时间戳,并将其转换成与ORACLEDB行相同时区的时间
  if [[ $line == *"POSTGRES"* ]]; then
    postgres_timestamp=$(echo "$line" | awk -F '|' '{print $3}')
    converted_timestamp=$(TZ="UTC$timezone" date -d "$postgres_timestamp" +"%Y-%m-%d %H:%M:%S %z")
    line=$(echo "$line" | awk -F '|' -v timestamp="$converted_timestamp" '{$3=timestamp; print}' OFS='|')
  fi

  # 输出处理后的行
  echo "$line"
done < temp.txt

# 删除临时文件
rm temp.txt

posted @   DBAGPT  阅读(39)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示