awk - awk 计算列中的行数(读取)
问题描述
我有一个文件,其中我在与基因相关的最后一列中进行了读取。
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:21577:2860 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:12188:3487 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:9524:3758 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:7243:4130 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:20035:10131 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:14291:16898 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11101:10796:17822 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11102:17796:2683 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11103:22603:1930 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 NS500455:81:HTVKJBGXC:1:11103:2286:7789 44 +
chr7 2457938 2457981 Naca + chr7 2457938 2457981 44 + number of reads
即第 6-8 列出现的次数。在此示例中,它们出现了 10 次。我想把它写成一个单独的专栏。
我尝试使用 awk 执行此操作,awk '!seen[$5]++' | awk '{a[$12]=1;} END{for (k in a)n++; print n;}'
但它不起作用。有人可以帮忙吗。问候,阿米特。
解决方案
使用您显示的示例,您能否尝试以下操作。用 GNU 编写和测试awk
。
awk '
FNR==NR{
arr[$1]++
next
}
($1 in arr){
print $0,arr[$1]
delete arr[$1]
}
' Input_file Input_file
第二种解决方案:如果您的样本按第一列排序,请尝试以下操作:
awk '
prev!=$1 && prev{
print prevLine,count
}
{
prev=$1
prevLine=$0
}
END{
if(prev){
print prevLine,count
}
}
' Input_file
注意:如果记录未按第一列排序,则使用sort
带有 Input_file 的命令并将其输出也传递给第二个解决方案。
推荐阅读
- ios - 文件快速下载后出现奇怪的错误
- python - Python矩阵中的简单乘法
- java - JDBC Spring数据@Transactional不起作用
- javascript - 如何同时模拟 Date.now 多次
- php - 替代 phpredis 的 getKeys()
- javascript - 使用 ACTION 和 POST 方法重定向到搜索表单中具有值的 URL
- node.js - 使用 Node.Js Sequelize 以不区分大小写的方式将 PostgreSQL 数组与给定数组进行比较?
- python - 使用 MLFlow 和 pyspark 编写自定义预测方法
- angular - 单击禁用按钮后未处理 Keydown 事件
- python - 交换具有不同键的 2 个 json 数据值