次のファイルがあります。
head logistic_results.assoc_3.logistic
CHR SNP BP A1 TEST NMISS OR STAT P
2 2:129412140:T:C 129412140 C ADD 1438 1.523 3.89 0.0001004
15 15:26411414:G:A 26411414 A ADD 1438 0.5577 -3.889 0.0001005
7 7:24286442:T:G 24286442 G ADD 1438 0.7449 -3.889 0.0001007
7 7:24286638:G:C 24286638 C ADD 1438 0.7449 -3.889 0.0001007
2 2:129403636:T:C 129403636 C ADD 1438 1.741 3.889 0.0001008
15 15:70363332:A:G 70363332 G ADD 1438 1.366 3.886 0.000102
3 3:13698784:G:A 13698784 A ADD 1438 1.465 3.884 0.0001028
3 3:32665882:C:A 32665882 A ADD 1438 1.54 3.883 0.000103
12 12:32855080:A:G 32855080 G ADD 1438 4.013 3.883 0.0001031
最初の列に3を含むすべての行を抽出する方法は?
これを試しましたが、空のファイルがあります...
grep '^3' logistic_results.assoc_3.logistic > logistic_results.assoc_3.logistic_chr3
awk '/^3/' logistic_results.assoc_3.logistic > logistic_results.assoc_3.logistic_chr3
この例では、結果は次のようになります。
3 3:13698784:G:A 13698784 A ADD 1438 1.465 3.884 0.0001028
3 3:32665882:C:A 32665882 A ADD 1438 1.54 3.883 0.000103
答え1
空でない最初のフィールドを文字列と比較します3
。
awk '$1 == "3"' logistic_results.assoc_3.logistic >logistic_results.assoc_3.logistic_chr3
コマンドの問題は、そのコマンドが行の3
最初の文字になりたいのですが、サンプルデータでは、数字の前にスペースがある可能性があることです。デフォルトのフィールド区切り文字と組み合わせて使用すると、先行する空白文字に関係なくawk
染色体名が配置されます。$1
$1 == "1"
これも染色体1でのみ機能するため、より安全になります。一方、1
フィールドの先頭で一致する正規表現(たとえば、/^[[:blank:]]*1/
または)も、たとえば、$1 ~ /^1/
と一致します。11
12
答え2
または:
grep "^[[:blank:]]*3" logistic_results.assoc_3.logistic > logistic_results.assoc_3.logistic_chr3