Bash: 使用第 n 行作为命令行的一部分
Bash: use nth row as part of the command line
我正在尝试使用一个名为 fastqtl 的工具,但它在这里可能不太相关。我有兴趣将 "loc_info.txt" 的每一行分配到选项中。我写了以下命令,但它反弹为“错误解析命令行:无法识别的选项'-n+1'
有没有办法让 fastQTL 每次运行函数时都读取并使用 "loc_info.txt" 中的那一行?
感谢您的任何建议!!
#!/bin/bash
tool="/path/FastQTL-2.165.linux/bin/"
vcf="/path/vcf/"
out="/path/perm_out"
for i in {1..1061}
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region tail -n+"$i" loc_info.txt --permute 1000 --out "$i"_perm.txt
done
如果你想在另一个命令中使用一个命令的输出,你可以为此使用子 shell,例如:
cmd1 -option $(cmd2)
此处您使用 cmd2 输出作为 cmd 中的输入。这里的关键是“$”和子外壳“()”。所以解决方案可能是:
#!/bin/bash
tool="/path/FastQTL-2.165.linux/bin/"
vcf="/path/vcf/"
out="/path/perm_out"
for i in {1..1061}
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region $(tail -n+"$i" loc_info.txt) --permute 1000 --out "$i"_perm.txt
done
循环读取文件:
i=1
while read -r line; do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region "$line" --permute 1000 --out "$i"_perm.txt
((i++))
done < loc_info.txt
尝试替换 tail -n+"$i" loc_info.txt
$(head -n $i loc_info.txt | tail -n 1)
例子
numOfLines=$(wc -l loc_info.txt | cut -d ' ' -f 1)
for i in $(seq 1 $numOfLines)
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz -
-region $(head -n $i loc_info.txt | tail -n 1) --permute 1000 --out "$i"_perm.txt
done
我正在尝试使用一个名为 fastqtl 的工具,但它在这里可能不太相关。我有兴趣将 "loc_info.txt" 的每一行分配到选项中。我写了以下命令,但它反弹为“错误解析命令行:无法识别的选项'-n+1'
有没有办法让 fastQTL 每次运行函数时都读取并使用 "loc_info.txt" 中的那一行?
感谢您的任何建议!!
#!/bin/bash
tool="/path/FastQTL-2.165.linux/bin/"
vcf="/path/vcf/"
out="/path/perm_out"
for i in {1..1061}
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region tail -n+"$i" loc_info.txt --permute 1000 --out "$i"_perm.txt
done
如果你想在另一个命令中使用一个命令的输出,你可以为此使用子 shell,例如:
cmd1 -option $(cmd2)
此处您使用 cmd2 输出作为 cmd 中的输入。这里的关键是“$”和子外壳“()”。所以解决方案可能是:
#!/bin/bash
tool="/path/FastQTL-2.165.linux/bin/"
vcf="/path/vcf/"
out="/path/perm_out"
for i in {1..1061}
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region $(tail -n+"$i" loc_info.txt) --permute 1000 --out "$i"_perm.txt
done
循环读取文件:
i=1
while read -r line; do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz --region "$line" --permute 1000 --out "$i"_perm.txt
((i++))
done < loc_info.txt
尝试替换 tail -n+"$i" loc_info.txt
$(head -n $i loc_info.txt | tail -n 1)
例子
numOfLines=$(wc -l loc_info.txt | cut -d ' ' -f 1)
for i in $(seq 1 $numOfLines)
do
${tool}fastQTL.1.165.linux --vcf ${vcf}GT.vcf.gz --bed pheno_bed.gz -
-region $(head -n $i loc_info.txt | tail -n 1) --permute 1000 --out "$i"_perm.txt
done