如何引用gnu parallel中的每个参数?

时间:2014-12-30 03:07:55

标签: gnu-parallel

给出一些制表符分隔的内容:

Test|One|Two|Three
Again|||Another

还有一个bash函数:

function print_last() {
  echo "$4"
}
export -f print_last

parallel命令:parallel -C "\|" print_last :::: data.tsv

我的预期输出是:

Three
Another

但是,Another永远不会打印,因为该函数只接收该行数据的两个参数。这是由表格数据中的空单元格引起的。我的数据将包含空白单元格和不同数量的列。

因此,在不更改我的命令以包含编号参数(print_last "{1}" "{2}" "{3}" "{4}")的情况下,如何确保将空值发送给函数?

1 个答案:

答案 0 :(得分:2)

由于您的函数被称为print_last,因此只需获取最后一个元素即可:

parallel -C "\|" echo {-1} :::: data.tsv

否则滥用-X将重复上下文:

parallel -C "\|" -X print_last \"\"{}  :::: data.tsv