Как разделить час и дату при извлечении временной метки с помощью команды hadoop - PullRequest
0 голосов
/ 25 января 2019

Мне нужно извлечь временные метки файлов с помощью команды hadoop:

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; отметка времени печати

Как мне решить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 25 января 2019

Вы можете извлечь метку времени, используя stringr и 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...