Не могу добавить двойные кавычки в каталог файла - PullRequest
0 голосов
/ 27 декабря 2018

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

"hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_1ELPC | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 "

Поэтому я попытался использовать эту инструкцию:

paste0("hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_","1ELPC",cat(" grep \"^d\" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 "),sep = "")

Но это возвращение

grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 [1] "hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_1EPSE"

Итак, проблема заключается в использовании функции cat , на самом деле мне нужно, чтобы ее результат был в формате кавычек.Другими словами, я не могу понять, почему результат был инвертирован здесь?

1 Ответ

0 голосов
/ 27 декабря 2018

Я предполагаю, что вы разбили аргументы на paste0 по определенной причине.Как упоминает @RuiBarradas - cat предназначен для печати, но не возвращает фактический объект (всегда возвращает NULL):

paste0("hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_",
       "1ELPC",
       " grep \"^d\" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 ",
       sep = "")

возвращает:

[1] "hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_1ELPC grep \"^d\" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 "

, что выглядит для менянравится то, что вы хотите.

Обратите внимание, что в выводе \" есть один символ (двойная кавычка).т. е.

> nchar("\"")
[1] 1

Для дальнейшей иллюстрации:

temp <- paste0("hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_",
               "1ELPC",
               " grep \"^d\" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 ",
               sep = "")

> cat(temp)
hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_1ELPC grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 

> print(temp, quote = FALSE)
[1] hadoop fs -ls -d -C -t /hdfs/data/t1/t11/34/1EX4/ | grep indicateurs-PUB_1ELPC grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...