r - 使用hadoop命令提取时间戳时如何分开小时和日期
问题描述
我需要使用 hadoop 命令提取文件的 timestimps:
hadoop fs -ls /hdfs/data/adhoc//InterfacePublique-Controle-PUB_1EPSE-201808-PR-20190110-183844-indicateurs-PUB_1EPSE/* | awk '{timestamp= $6 " " $7;print timestamp}'
它的作用是给予
"2019-01-10 18:55"
但是当我使用这样的系统函数删除$6 $7之间的引号时
x <- "/hdfs/data/adhoc//InterfacePublique-Controle-PUB_1EPSE-201808-PR-20190110-183844-indicateurs-PUB_1EPSE/*"
system(paste0("hadoop fs -ls ",x," | awk '{timestamp= $6 $7;print timestamp}' "),intern =TRUE)
返回:
2019-01-1018:55。第 18 小时和第 10 天结束。
然后,如果我在 hadoop 表达式中添加引号。
system(paste0("hadoop fs -ls ",x," | awk '{timestamp= $6 " " $7;print timestamp}' "),intern =TRUE)
它给出了一个错误说
意外令牌 $7;打印时间戳
请问我该如何解决?
解决方案
stringr
您可以使用and提取时间戳lubridate
:
x <- "/hdfs/data/adhoc//InterfacePublique-Controle-PUB_1EPSE-201808-PR-20190110-183844-indicateurs-PUB_1EPSE/*"
library(lubridate)
library(stringr)
ymd_hms(
str_extract(x, "(\\d{8}-\\d{6})")
)
[1] "2019-01-10 18:38:44 UTC"
推荐阅读
- hadoop - 查找用于 hadoop 文件的压缩编解码器
- mysql - Python MySQL 插入 unicode
- javascript - 在angularjs wetheen组件中编辑输入表单
- python-3.x - 获取超过 10 天未使用访问密钥的 iam 用户列表的 Python 脚本
- javascript - 将枚举值加载到 dojo 存储中
- python - 如何刮掉所有
- 所有ID都有不同的价值?
- android - 升级到 Crashlytics NDK 2.+ 后的虚假 NDK 堆栈回溯
- r - 使用 MICE 插补后每个子组的描述性统计
- freertos - STM32F411、FreeRTOS 和 CubeMX HardFault_Handler() 连接到端口后
- openlayers - OL 5:快速更改图层时平滑过渡