열에 문자열이 포함되어 있는지 어떻게 알 수 있나요?

열에 문자열이 포함되어 있는지 어떻게 알 수 있나요?

아래와 같은 파일이 있습니다.

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개 행에는 0-1 이외의 숫자가 포함되지 않습니다. 그렇다면 P 열에 다른 내용이 포함되어 있는지 확인하는 방법은 무엇입니까?

답변1

이 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

답변2

경고 메시지는 "닫기 세트"("왼쪽"에서 열림, "오른쪽"에서 닫힘)에 0이 포함되지 않음을 나타내는 것 같습니다. Kamaraj의 우아한 제안을 다음과 같이 수정해 보세요.

awk 'NR>1 && ($NF>1 || $NF~/[^0-9.]/ || $NF == 0)' file

관련 정보