bash - 从文件中读取并将其传递给另一个命令
问题描述
我有一个包含命令输入的两列制表符分隔文件。
输入文件如下所示:
2795.bam 2865.bam
2825.bam 2865.bam
2794.bam 2864.bam
命令行是:
macs2 callpeak -t trt.bam -c ctrl.bam -n Macs.name.bam --gsize hs --nomodel
其中 trt.bam 是第 1 列中的文件名,而 ctrl.bam 是 col2 中的文件名。
我试图从输入文件中读取这些值并运行它们。
为此,我正在执行以下操作:
cat temp | awk '{print $1 "\t" $2 }' | macs2 callpeak -t $1 -c $2 -n Macs.$1 --gsize hs --nomodel
这是失败的。我得到的错误是:
usage: macs2 callpeak [-h] -t TFILE [TFILE ...] [-c [CFILE [CFILE ...]]]
[-f {AUTO,BAM,SAM,BED,ELAND,ELANDMULTI,ELANDEXPORT,BOWTIE,BAMPE,BEDPE}]
[-g GSIZE] [--keep-dup KEEPDUPLICATES]
[--buffer-size BUFFER_SIZE] [--outdir OUTDIR] [-n NAME]
[-B] [--verbose VERBOSE] [--trackline] [--SPMR]
[-s TSIZE] [--bw BW] [-m MFOLD MFOLD] [--fix-bimodal]
[--nomodel] [--shift SHIFT] [--extsize EXTSIZE]
[-q QVALUE | -p PVALUE] [--to-large] [--ratio RATIO]
[--down-sample] [--seed SEED] [--tempdir TEMPDIR]
[--nolambda] [--slocal SMALLLOCAL] [--llocal LARGELOCAL]
[--broad] [--broad-cutoff BROADCUTOFF]
[--cutoff-analysis] [--call-summits]
[--fe-cutoff FECUTOFF]
macs2 callpeak: error: argument -t/--treatment: expected at least one argument
在理想情况下,这应该采用如下输入:
macs2 callpeak -t 2795.bam -c 2865.bam -n Macs.2795 --gsize hs --nomodel
其中 Macs 是在 linux 上运行的独立软件。在目前的情况下,软件无法从文件中读取输入。
任何投入都深表感谢。
解决方案
我相信您想要实现的是输入文件中所有行的循环。在 bash 中,您可以通过以下方式实现:
while read -r tfile cfile; do
macs2 callpeak -t "$tfile" -c "$cfile" -n "Macs.$tfile" --gsize hs --nomodel
done < "input_file.txt"
请参阅:https : //mywiki.wooledge.org/BashFAQ/001(cfr. Sundeep 的评论)
原答案:
while read -a a; do
macs2 callpeak -t "${a[0]}" -c "${a[1]}" -n "Macs.${a[0]}" --gsize hs --nomodel
done < "input_file.txt"
input_file.txt
这将逐行读取输入文件并将其存储在名为a
using的 bash 数组中read -a a
。从那时起,您将使用变量${a[0]}
和${a[1]}
.
推荐阅读
- asp.net-mvc - User.Identity.Name 给出 IIS 服务器用户名而不是客户端用户名
- javascript - 使用Javascript,我试图将数据保存在浏览器的SessionStorage和localStorage中,但是刷新页面后数据丢失了
- windows - 新的 Microsoft Edge 安装删除了我的 Visual Studio 代码。其他人有这个问题吗?
- c# - 如何使用 iTextSharp 获取 acrofield 自定义属性
- java - 为什么 Weld 需要 AnnotationLiteral 而不是 Annotation 类?
- r - 使用 animate 包创建地图动画
- sql - 如何根据SQL中另一表的匹配字符串列更新一个表的数字列
- python-3.x - 如何右对齐打印 Python 整数列表
- html - 如何在 asp.net 中更新一个列(稍后更好地描述)
- javascript - 所有浏览器上的 CSP 错误,除了带有样式组件的基于 chrome 的浏览器