0

我在这个格式的数据文件:BASH脚本:得到命令的输出模式,成为它作为一个变量到另一个命令处理[...]

2014-02-05 09:43:30;data;data;data;data;data; 
2014-02-05 09:52:10;data;data;data;data;data; 
2014-02-05 10:02:41;data;data;data;data;data; 

该数据已经通过搜索处理针对具有grep |的特定“数据”模式awk语法,并以与原始文件数据相同的格式生成输出。该输出显示在屏幕上。

我感兴趣的是什么第一部分:

2014-02-05 09:43:30  

我上运行该服务器在格林尼治标准时间(UTC)时区的日期和数据也是这种格式。我想利用数据的上述部分并替换它像这样:

  • 从所生成的输出
  • 饲料2014-02-05 9时43分30秒除去一部分时间(9时43分30秒)到TZ ​​=美国/华盛顿日期-d“09:43:30”(作为每个加工生产线的已保存变量),以获得指定时区的日期/时间输出(美国/华盛顿)
  • 重新插入输出TZ =美国/华盛顿日期-d“09:43:30”到原始输出(由grep | awk生成),用TZ = America/New生成的新日期和时间替换原始日期和处理时间。华盛顿日期-d“09:43:30”
  • 重新显示修改后的输出

我遇到了我想要实现的过程背后的语法逻辑问题,如上面的项目符号所述。

回答

0

试着这么做

#!/bin/bash 
while read -r line; do 
    first="${line%%;*}" 
    second="${line#*;}" 
    export TZ=EST 
    echo $(date -d "$first GMT" '+%Y-%m-%d %H:%M:%S')";$second" 
done < <(grep) 

示例输出

> abovescript 
2014-02-05 04:43:30;data;data;data;data;data; 
2014-02-05 04:52:10;data;data;data;data;data; 
2014-02-05 05:02:41;data;data;data;data;data; 
+0

嗨BroSlow,想你的脚本是这样的: '#/斌/庆典 读-p “中输入数据:” NMBR 同时读取-r行; echo $(date -d“$ first GMT”'+%Y-%m - %d%H:%M:%S')“; $ second” done <(grep $ nmbr tz_test.txt)'...并且我得到了'日期:无效日期'02-06-2014 09: 38:42 GMT' ; data; data1; data date:invalid date'02-06-2014 09:41:53 GMT' ; data; data2; data date:invalid date'02-06-2014 10: 05:37 GMT' ; data; data1; data date:无效日期'02-06-2014 11:24:33 GMT' ; data; data2; data' –

+0

@linux_newbie如果你做'date --version'? – BroSlow

+0

'date(GNU coreutils)8.13' –

相关问题