Awk
如何刪除第二個下劃線後的所有內容但保留其他列?
我的 file.txt 看起來像這樣
variant_id pval_nominal 1_752721_A_G_b37 2.23485e-05 1_900397_C_T_b37 3.04603e-05 1_928297_G_A_b37 2.12455e-05
我正在嘗試刪除第一列中第二個下劃線之後的所有內容,使其看起來像這樣:
variant_id pval_nominal 1_752721 2.23485e-05 1_900397 3.04603e-05 1_928297 2.12455e-05
我之所以要求刪除第一列中第二個下劃線之後的所有內容,是因為第一列中的實例可能如下所示:1_1025672_GCA_G_b37
我試圖使用這個命令:
awk -F _ '{print $1 (NF>1? FS $2 : "")}' file.txt > file2.txt
但 file2.txt 看起來像這樣:
variant_id pval 1_752721 1_900397 1_928297
如何執行此命令以便也返回第二列?
謝謝
試試這個,
sed 's/_[A-Z].* / /g' file variant_id pval_nominal 1_752721 2.23485e-05 1_900397 3.04603e-05 1_928297 2.12455e-05
保持主欄位分隔符不變,並在第一個欄位上使用awk的*split()*函式。
$ awk <data '{ split($1,f1,/_/) ; printf("%s_%s %s\n",f1[1],f1[2],$2) }'