Lei*_*ing 18 linux bash grep date pipe
我有一个类似 的日期2014-01-30 05:04:27 GMT,如果我运行date -d "2014-01-30 05:04:27 GMT",则输出在我服务器的时区 ( Thu Jan 30 16:04:27 EST 2014) 中。
通过使用 grep 和 cut,我从文件中提取了格林威治标准时间的日期。但是,我正在努力将其转换为我的当地时间。
例如:
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'['
Run Code Online (Sandbox Code Playgroud)
输出: 2014-01-30 05:04:27 GMT
最后我可以添加什么,以将该输出传递给date -d?
尝试:
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date -d
Run Code Online (Sandbox Code Playgroud)
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date
Run Code Online (Sandbox Code Playgroud)
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date -d "$1"
Run Code Online (Sandbox Code Playgroud)
小智 23
如果您使用的是来自足够新的 coreutils 的 GNU 日期date -f,则帮助屏幕中会显示 , :
-f, --file=DATEFILE like --date once for each line of DATEFILE
Run Code Online (Sandbox Code Playgroud)
所以你的尝试 4 可能是:
$ grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date -f -
Run Code Online (Sandbox Code Playgroud)
最后一个-代表标准输入。
Joh*_*024 18
gmt="$(grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[')"
date -d "$gmt"
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢管道格式:
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | { read gmt ; date -d "$gmt" ; }
Run Code Online (Sandbox Code Playgroud)
问题是date不使用标准输入。因此,我们必须将 stdin 捕获到一个变量中(gmt在此处调用),然后在命令行上将其提供给date.
第二种方法的示例输出:
$ echo "2014-01-30 05:04:27 GMT" | { read gmt ; date -d "$gmt" ; }
Wed Jan 29 21:04:27 PST 2014
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20330 次 |
| 最近记录: |