我有一个使用两个命令行参数的脚本。
./metagwastoolkit.run.sh metagwastoolkit.model1.conf metagwastoolkit.files.model1.list
稍后在脚本中我这样做:
echo "cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk ' $2 == 0 || $3 == 0 || $4 == 0 { print $1, $2, $3, $4 } ' > meta.results.needs_p_fixing.out" > meta.p_corrector.sh
这不是我想要的东西,它会产生:
cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk ' metagwastoolkit.files.model1.list == 0 || == 0 || == 0 { print metagwastoolkit.model1.conf,metagwastoolkit.files.model1.list,, }' > meta.results.needs_p_fixing.out
所以我的配置文件为$ 1,我的files.list为$ 2 ...这显然不是我想要的...如果字段2,3或4相等,我希望它从管道中打印第1列到第4列到0。
如何更改此内容??
最佳,
桑德
答案 0 :(得分:0)
所以答案是在echo
内部变量被命令行参数替换,这不是我的意图。解决方案是逃避$
- 标志。
工作线是:
echo "cat meta.results.out | parseTable.pl --col VARIANTID,P_SQRTN,P_FIXED,P_RANDOM | awk '\$2 == 0 || \$3 == 0 || \$4 == 0 { print \$1, \$2, \$3, \$4 }' > meta.results.needs_p_fixing.out" > meta.p_corrector.sh
我想要的是:检查管道的第2,3和4列的字段是否等于0并打印这些字段。
感谢@Barmar帮我解决问题。
最佳,
桑德