私の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
最初の列の2番目の下線以降のすべての内容を削除しようとしているので、
variant_id pval_nominal
1_752721 2.23485e-05
1_900397 3.04603e-05
1_928297 2.12455e-05
最初の列の2番目の下線の後にあるすべての項目を削除するように要求するのは、最初の列のインスタンスが次のようになる可能性があるためです。 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
2番目の列も返されるように、このコマンドをどのように実行しますか?
ありがとう
答え1
デフォルトのフィールド区切り文字を変更せずにそのままにして使用するアッ~の分かれる()最初のフィールドの機能です。
$ awk <data '{ split($1,f1,/_/) ; printf("%s_%s %s\n",f1[1],f1[2],$2) }'
答え2
この試み、
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