Почему некоторые параллельные входы GNU содержат кавычки? - PullRequest
1 голос
/ 12 июня 2019

Параллельный ввод Gnu (например, из канала) автоматически вводит одинарные кавычки, которые содержат пробел или символы, такие как / и: Есть ли причина для этого?Как я могу напечатать ввод без каких-либо кавычек?

Я пытался с различными параллельными параметрами, такими как -q или с разными типами кавычек, встроить ввод в параллельную команду, однако он всегда отображается содинарные кавычки, когда вход содержит пробел / символы.

Вот командные строки, которые я пробовал:

awk '{print "ftp://"$1}' assembly2contig.lst | parallel --dry-run wget '{}'

Вывод будет

wget 'ftp://mypath'
awk '{print $1}' assembly2contig.lst | parallel --dry-run wget 'ftp://{}'

ЭтоКоманда работает, но мне нужно построить мой путь в параллели, что не очень удобно для моих случаев, например, когда мой входной файл уже содержит пути.

Я хотел бы получить

wget ftp://mypath

, используя ftp: // mypath как параллельный вход, поступающий из канала (например, awk)

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Причина цитирования заключается в том, чтобы избежать поведения по умолчанию в xargs:

echo 'two  spaces  lost' | xargs echo
echo 'two  spaces  kept' | parallel echo

Чтобы избежать этого, вы можете использовать eval:

echo 'two  spaces  lost' | parallel eval echo
0 голосов
/ 12 июня 2019

Если assembly2contig.lst выглядит так:

hp.com/something abcde 1234
ibm.com/other fred 3390
bbc.co.uk/film1 bill 999

Вы можете вообще избежать awk и использовать:

parallel --colsep ' ' --dry-run -a assembly2contig.lst wget ftp://{1}

Или, если вход представляет собой трубу:

cat assembly2contig.lst | parallel --colsep ' ' --dry-run wget ftp://{1}

Пример вывода

wget ftp://hp.com/something
wget ftp://ibm.com/other
wget ftp://bbc.co.uk/film1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...