相关疑难解决方法(0)

如何更改sed中的日期格式?

假设我想通过date命令将时间戳中的日期转换为另一种格式。在控制台中,我会说,date -d@<timestamp>但我碰巧想对文本文件中的许多字段执行此操作。

使用eto 在sed( sed (GNU sed) 4.2.2,实际上) 中执行我是说:

$ echo 1449158360 | sed -r 's#.*([0-9]{10}).*#date -d@\1 "+%Y";#e'
2015
Run Code Online (Sandbox Code Playgroud)

有效,不错!

现在我创建了一个虚拟文件myfile

my timestamp is 1449158360 but also I wonder what date was 1359199960.
Run Code Online (Sandbox Code Playgroud)

我想将其替换为相同但具有时间戳的相对年份:

my timestamp is 2015 but also I wonder what date was 2013.
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试运行与上面相同的命令,则会失败:

$ sed -r 's#([0-9]{10})#date -d@"\1" "+%Y";#e' myfile
sh: my: command not found
sh: but: command not found
Run Code Online (Sandbox Code Playgroud)

因为sed将第一个单词解释为要执行的内容。

显然,如果我只获取这些数据而不是其他任何东西,它就可以工作:

$ …
Run Code Online (Sandbox Code Playgroud)

regex bash date sed

3
推荐指数
1
解决办法
2967
查看次数

标签 统计

bash ×1

date ×1

regex ×1

sed ×1