bash - 使用每行的名称读取列和输出文件
问题描述
我从事遗传学工作,我有这个命令行可以检索基因的 DNA 序列:
search -db gene -query "glutaminase-asparaginase [Gene/Protein Name] AND (bacteria [orgn] OR fungi [orgn] OR archaea [orgn]) AND alive [prop]" | efetch -format docsum | xtract -pattern GenomicInfoType
-element ChrAccVer -element ChrStart -element ChrStop |xargs -n 3 sh -c 'efetch -db nuccore -id "$0" -seq_start "$1" -seq_stop "$2" -format fasta'
输出是这样的(基因谷氨酰胺酶 - 天冬酰胺酶的三个生物的三个序列):
>NC_030957.1:c4121890-4120582 Colletotrichum higginsianum
TGAGAGCTTCTTACTTGTCGACGCTGTTGTTGCCAGCTCTGGTAGCCCATGGTTTCGCCTCCCCAGTCGG
>NC_016603.1:c898826-897759 Acinetobacter pittii
TGTTGACTAAAACTGTTAAATCTTTAGGTTTAGCGATGGGCTTATTAG
>NC_002947.4:c2800289-2799201 Pseudomonas putida
TGAATGCCGCACTGAAAACCTTCGCCCCAAGCGCACTCGCCCTGCTGCTGATCCTGCCATCCAGCGCCTC
但我需要使用几个基因名称进行此查询,并生成包含每个基因序列的输出文件。我有一个这样的 Excel 表格:
glutaminase-asparaginase ColumnB ColumnC
Polyphosphate kinase ColumnB Columnc
Inositol-polyphosphate multikinase ColumnB Columnc
我正在尝试使用此脚本执行此操作:
for i in $( cat PATH_TO_TABLE | cut -f1 ); do
esearch -db gene -query "$i [Gene/Protein Name] AND (bacteria [org .... >>"$i".fasta
done
但是脚本只读取了 Column 的第一个单词,例如在聚磷酸激酶中只读取“聚磷酸盐”,输出文件是聚磷酸盐.fasta。当我需要查询超过“多磷酸激酶”并且输出为 Polyphosphate_kinase.fasta
你能帮我解决这个问题吗?我会很感激。
解决方案
Bash 只捕获第一个单词,因为它不知道第二个单词是另一列还是第一列的一部分。这是由名称中的空格引起的。要解决此问题,请将您的 Excel 文件导出为 CSV。它会给你这样的东西:
glutaminase-asparaginase,ColumnB,ColumnC
Polyphosphate kinase,ColumnB,ColumnC
Inositol-polyphosphate multikinase,ColumnB,ColumnC
然后,您可以剪切','
以拆分列。请注意,如果您的数据也包含','
,这可能是一个问题。然后,您将 Excel 导出为 CSV,但带有';'
分隔符(在我的 Excel 上提供)。如果你同时拥有','
and ';'
,另一种选择是使用制表符分隔符导出到 .txt 。但是然后......所以你必须选择最适合你的数据集的格式;-)
要将空格替换为'_'
,您可以使用echo "$Column1Value" | tr '[:space:]' '_'
。
另一种选择是直接在 Excel 电子表格中用 _ 替换所有空格,避免所有这些。
推荐阅读
- javascript - 将 package.json 中使用的脚本移动到 npm 包
- python - 我找不到在 PyTorch 中使用我的 wav 文件作为数据集的方法
- javascript - Thymeleaf 标签在 html() javascript 中不起作用
- python - python发行版的安装
- typescript - Github 操作失败构建 Typescript 但在本地机器上工作
- linux - Bash - 使用 socat 的代理服务器
- uml - UML 状态图定义
- html - django 指向 \ 错误的 URL href
- here-api - 来自 HERE API (bcp 47) 的语言响应不正确(瑞典语)
- bash - 如何在文件中找到最常用的名称?