给出一些制表符分隔的内容:
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}"
)的情况下,如何确保将空值发送给函数?
答案 0 :(得分:2)
由于您的函数被称为print_last
,因此只需获取最后一个元素即可:
parallel -C "\|" echo {-1} :::: data.tsv
否则滥用-X将重复上下文:
parallel -C "\|" -X print_last \"\"{} :::: data.tsv