awk - 如何将 awk 指令的结果输出到与当前工作目录不同的目录
问题描述
背景:我有 48 个文件试图使用 awk 按某个列中的值进行拆分。我的数据的一个例子是:
chr pos ref alt reffrq info rs pval effalt gene
chr1 13417 C CGAGA 0.0915493 1 rs777038595 0.978587 0.0051328 DDX11L1
chr1 17559 G C 0.00662252 1 rs866150608 0.138321 0.985859 DDX11L1
chr1 54421 A G 0.0448276 1 rs146477069 0.534267 0.177514 BLAH
chr1 54490 G A 0.191489 1 rs141149254 0.830873 0.0307553 BLAH
在这个文件中,该gene
列由数千个不同的名称组成,我想将这些巨大的文件拆分为每个不同基因名称的文件(所以我在这里以DDX11L1.txt
and结尾BLAH.txt
)。
根据在上一个问题中找到的代码,我有一个解决方案可以逐个处理每个文件:
awk '{print >> $10".txt"}' tissue1.txt
问题:然而,我现在想做的是自动对 48 个文件中的每一个进行迭代,并将每个拆分文件分隔到每个较大文件的新目录中。
这是我到目前为止所提出的(其中tissue
之前从表中定义,也是每个大文件的前缀):
mkdir /inputs/"$tissue"
workingDir=/inputs/"$tissue"
awk -v tissue="$tissue" -v workingDir="$workingDir" '{print >> "$workingDir"/$10".txt"}' "$tissue"_input.txt
这里的问题是将文件输出到我当前所在的同一目录中,然后文件的名称$workingDirGENENAME.txt
显然不是我想要的。所以基本上我只是不明白我需要在哪里放置输出目录的变量。
解决方案
原来这只是对 awk 使用的语法的误解。
以下似乎有效:
awk -v tissue="$tissue" -v workingDir="$workingDir" '{print >> workingDir "/" $10".txt"}' "$tissue"_input.txt
推荐阅读
- r-markdown - 我可以将用 slidy 或 ioslide 制作的幻灯片转换为 Xaringan
- php - 为什么我的计数没有随着我的 while 语句 php 增加?
- python - 我的功能 menu.displayHomeMenu(m) 陷入无限循环。为什么?
- python - 在 Python 中将 1-1000 的数字打印为单词
- android - 错误:找不到符号导入 dagger.hilt.android.components.ApplicationComponent;
- python - 如何使用正则表达式在熊猫数据框列中查找值
- php - RecursiveIterator 没有按预期工作
- javascript - return 语句在 console.log 中返回空数据
- r - 曼哈顿图未标记所有数据点
- sql - 为什么 Oracle 隐式添加 SYS_EXTRACT_UTC 到索引?