linux - 创建一个包含样本、基因和行数的文件 - linux
问题描述
我正在尝试创建一个名为 depths 的文件,其中包含样本名称、基因以及该基因在样本中的次数。下面的代码是我目前拥有的,但输出只有文件名。前任。文件名=ERR034597.MTCYB.sam
例如,我希望该文件具有 ERR034597 MTCYB 327。
for i in genes/${i}.sam
filename=$(basename $i)
n_rows=$(cat $i | wc -l)
echo $filename $n_rows > depths
解决方案
如果我理解您的尝试,那么您需要更多步骤来隔离文件名的第一部分(例如ERR034597
)和基因(例如MTCYB
),然后再将信息写入depths
. 您还需要考虑是depths
在每次迭代中替换 的内容(例如 using >
)还是Appending to depths
with >>
。
由于您的标签是 [Linux],我们只能假设您有一个 POSIX shell,而不是像 bash 这样的高级 shell。要在获得行数之前从第一部分和基因中删除.sam
扩展filename
,然后将其分离为第一部分和基因,您可以执行类似于以下的操作:
#!/bin/sh
:> depths # truncate depths (optional - if required)
for i in genes/*.sam; do # loop over all .sam files
filename="$(basename "$i")" # remove path from name
filename="${filename%.sam}" # trim .sam extension from name
gene="${filename##*.}" # trim to last '.' save as gene
filename="${filename%.$gene}" # remove gene from end of name
n_rows=$(wc -l < "$i") # get number of lines in file
echo "$filename $gene $n_rows" >> depths # append vales to depths
done
这将导致depths
包含类似于以下内容的行:
ERR034597 MTCYB 92
(其中测试文件包含 92 行)
如果您还有其他问题,请仔细查看并告诉我。
推荐阅读
- c# - 为什么我无法更改 Visual Studio 文档大纲中的面板顺序?
- android - 如何从 ViewModel (Kotlin) 中的包装类中提取数据
- swift - 从firebase实时读取数据到表视图
- python - 如何使用 Python Selenium 单击没有 ID 的按钮?
- python - 根据列表列加入两个熊猫数据框
- python - 从 Django 表单中写入输入类型的值
- python - 查找一个数据帧中的索引不在另一个数据帧中的位置
- tinymce - TinyMCE 在编辑器中的特定内容上禁用工具栏按钮
- javascript - 具有叠加效果的 Tailwind CSS 导航栏汉堡
- mysql - MYSQL 8.0.23-cloud left join on information_schema.KEY_COLUMN_USAGE 不起作用