要将日期格式化为时间戳,我会使用例如date -d "2012-05-06 12:12" "+%s"
。但是,如果我有一个每行日期的文件,我该怎么做:
cat file.txt | date "+%s" # does not work
我可以做以下事情:
cat file.txt | while read line; do `date -d "$line" "+%s"`; done;
但这太丑了......
将日期时间转换为时间戳的其他解决方案(格式为YYYY-MM-DD HH:MM:SS)也是可以接受的。
编辑:我的现实生活中的例子有点复杂,让我详细说明一下:
`some command that produces complex lines` | grep only-speicif-lines | awk '{ print $5 | (I WANT TO PASS THE DATE HERE TO GET TIMESTAMP IN THE END)}'
答案 0 :(得分:8)
这就是:
while read mydate
do
date -d "$mydate" "+%s"
done < file
请注意您的解决方案
cat file.txt | while read line; do `date -d "$line" "+%s"`; done;
不是每行读取文件行的方法。你需要
while read line; do `date -d "$line" "+%s"`; done < file.txt
^^^^^^^^^^
$ cat a
2012-05-06 12:12
2012-05-06 12:13
$ while read mydate; do date -d "$mydate" "+%s"; done < a
1336299120
1336299180
来自你的评论:
编辑:我的现实生活中的例子有点复杂,让我详细说明一下:
`some command that produces complex lines` | grep only-speicif-lines | awk '{ print $5 | (I WANT TO PASS THE DATE HERE
在最后获得TIMESTAMP}}'
这可以做到:
xargs -i date -d "{}" "+%s"
$ cat a | grep 2 | xargs -i date -d "{}" "+%s" # grep here is just a silly example
1336299120
1336299180