unix - 为什么一些 GNU 并行输入包含引号?

标签 unix awk parallel-processing gnu

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)

最佳答案

引用的原因是为了避免 xargs 中的默认行为:

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

要避免这种情况,您可以使用 eval:

echo 'two  spaces  lost' | parallel eval echo

关于unix - 为什么一些 GNU 并行输入包含引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56566416/

相关文章:

linux - Unix shell 脚本参数的默认值?

regex - git 的 awk 字符串

if-statement - awk 打印标题上带有条件的列

linux - awk Sed 查找并将结果分配给多个变量

java - 如何配置Jenkinsfile并行构建maven模块?

r - 在 AWS EC2 上使用 doRedis 和 doMC 在 R 中进行多核/并行模拟

bash - shell脚本中令人困惑的语句

linux - 在 Linux 中使用 SSL 搜索文件

c - 进程间通信 fork() - 定时 wait() 和/或 sleep()

java - 在 Java 中并行化阻塞调用