regex - 使用 awk 只包含以特定值开头的列?

我有一个包含 1.92 亿行的 7 列文件。我想过滤文件,使其第二列中只有以 chr1_chr7_ 开头的数据。

head file.txt.gz
gene_id variant_id  tss_distance    ma_samples  ma_count    maf pval_nominal    slope   slope_se
ENSG00000227232.5   chr1_13550_G_A_b38  -16003  16  16  0.0132231   0.329834    0.188778    0.193552
ENSG00000227232.5   chr1_14671_G_C_b38  -14882  12  12  0.00991736  0.618791    0.110828    0.222611
ENSG00000227232.5   chr2_14677_G_A_b38  -14876  60  60  0.0495868   0.378305    -0.090737   0.102905
ENSG00000227232.5   chr3_16841_G_T_b38  -12712  46  46  0.0380165   0.100419    -0.191008   0.116067
ENSG00000227232.5   chrX_16856_A_G_b38  -12697  10  10  0.00826446  0.708684    -0.0901965  0.241282
ENSG00000227232.5   chrX_17005_A_G_b38  -12548  18  18  0.014876    0.153674    -0.257458   0.180205
ENSG00000227232.5   chr4_17005_A_G_b38  -12548  18  18  0.014876    0.153674    -0.257458   0.180205
ENSG00000227232.5   chr7_17005_A_G_b38  -12548  18  18  0.014876    0.153674    -0.257458   0.180205

输出:

head file.txt.gz
gene_id variant_id  tss_distance    ma_samples  ma_count    maf pval_nominal    slope   slope_se
ENSG00000227232.5   chr1_13550_G_A_b38  -16003  16  16  0.0132231   0.329834    0.188778    0.193552
ENSG00000227232.5   chr1_14671_G_C_b38  -14882  12  12  0.00991736  0.618791    0.110828    0.222611
ENSG00000227232.5   chr7_17005_A_G_b38  -12548  18  18  0.014876    0.153674    -0.257458   0.180205

第二列的数据格式为 chrnumber _number_letter_letter_b38。数字和字母可以不同。例如 chr4_17005_A_G_b38ch7_17090_A_T_b38。我只希望第二列以 chr1_chr7_ 开头。我将如何使用 awk 执行此操作?

我累了

gunzip -c file.txt.gz | awk '$2 ~ /^chr1/' > output.txt

但是输出还包含 chr19 和 chr10。一切都带有 1。我也不确定如何包含 chr7。

最佳答案

您可以使用:

gunzip -c file.txt.gz | awk '$2 ~ /^chr[17]_/' > output.txt

^chr[17]_ 将在起始位置之后匹配 chr1_chr7_。通过添加 _,我们确保不匹配 chr10chr75

https://stackoverflow.com/questions/74220927/

相关文章:

.net - 投票 : What do you call your business layer b

.net - 如何避免 .NET RegEx 类中的无限循环?

java - @EnableGlobalMethodSecurity 在新的 spring boot

user-interface - 愚蠢且令人沮丧的跨浏览器 UI 问题

r - 与 R 中的日期相关联的条件累积和

performance - Oracle/PLSQL 性能

java - 流迭代不使用最后一个值

c++ - 使用 enable_if 对类方法进行部分模板特化

nlp - 自然语言中的范围歧义

c++ - 为什么即使还有弱指针,make_shared 也会调用析构函数?