gpt4 book ai didi

bash - 用另一个命令的返回值替换 bash 命令输出中的子字符串(例如,将时间戳转换为日期)

转载 作者:行者123 更新时间:2023-11-29 09:29:34 25 4
gpt4 key购买 nike

我有一个输出 Unix 时间戳和一些文本的命令:

> mycommand
1484169138 happened XYZ
1484169139 happened XZY
...

我想将时间戳转换为人类可读的字符串,但似乎无法弄清楚该怎么做。

我尝试过各种工具(如 sedawk)。以下answer on stackoverflow似乎很接近;但我在 FreeBSD 上,它似乎没有使用 e 的 GNU 扩展:

$ mycommand |sed -E 's#([0-9]{10})#date -r \1#e'
sed: 1: "s#([0-9]{10})#date -r \1#e": bad flag in substitute command: 'e'

最佳答案

您可以在 POSIX shell 的 while 循环中使用 date 命令重新格式化日期(我应该指出这可能不是您在 FreeBSD 中的默认 shell)。

$ while read d t; do printf "[%s] %s\n" "$(date -r "$d" '+%F %T')" "$t"; done < x.txt
[2017-01-11 16:12:18] happened XYZ
[2017-01-11 16:12:19] happened XZY

while 循环也可以是管道的结尾:

$ mycommand | while read d t; do ...; done

关于bash - 用另一个命令的返回值替换 bash 命令输出中的子字符串(例如,将时间戳转换为日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41743790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com