Linux
如何知道該列是否包含字元串?
我有一個類似於下面的文件。
SNP Beta A1 A2 P rs124 -0.5 T C 0.11 rs534 0.22 A G 0.245 rs199 1.32 G C 0.345 rs947 -0.07 T G 0.00002 rs667 0.37 C T 0.04 ....
有 23640021 行。我進行了分析,導致錯誤如下。
WARNING: 255837 SNPs had P outside of (0,1]. The P column may mislabeled.
head -10000 file
前 10000 行和最後 10000 行不包含 0-1 之外的任何數字。那麼我怎樣才能確定 P 的列是否包含其他內容?
此 awk 命令將檢查最後一列的值是否 >1 或是否包含任何其他字元(數字和點除外)
$ awk 'NR>1 && ($NF>1 || $NF~/[^0-9.]/)' test.txt rs534 0.22 A G 0.245B rs947 -0.07 T G 1.00002 rs667 0.37 C T 0.0A4 $ cat test.txt SNP Beta A1 A2 P rs124 -0.5 T C 0.11 rs534 0.22 A G 0.245B rs199 1.32 G C 0.345 rs947 -0.07 T G 1.00002 rs667 0.37 C T 0.0A4 rs667 0.37 C T 0.04
警告消息似乎表明“clopen set”(在“左側”打開,在“右側”關閉)不包括 0。試試 Kamaraj 的好建議的這個 apadtion:
awk 'NR>1 && ($NF>1 || $NF~/[^0-9.]/ || $NF == 0)' file