0|0,0|1,1|0 및 1|1을 포함하는 파일 추출

0|0,0|1,1|0 및 1|1을 포함하는 파일 추출

CSV 파일이 있습니다. 다음과 같습니다.

chr22,  Position ,  A     ,       B ,      C ,   D , E
22   ,  16050115 ,  0|0:404     ,  0     , 0    ,  0  ,    1|1:5
22    ,16050213    ,0|0:403  ,     0    ,  0   ,    0  ,   3|4:6
22 , 16050607  ,    1|0:340     , 1|1:3,  0   ,    0  ,    1|1:3
22   16050737 ,    0|0:402   ,   3|0:4 , 0|7:23 , 0  ,      0 
22 16050783  ,   0|0:404 ,       2|2:5 , 0|1:31 , 1|0:51,   0

0|0:4040|0는 의 개수를 나타냅니다 404. 0|01|0값을 추출하고 싶은데 0|1출력은 다음 1:1 과 같아야 합니다.

chr22, Position, A ,B, C ,D, E
22 ,16050115, 0|0:404 ,0 ,0 ,0 ,1|1:5
22 ,16050213, 0|0:403, 0 ,0, 0, 0
22 ,16050607, 1|0:340, 1|1:3, 0 ,0 ,1|1:3
22 ,16050737, 0|0:402, 0 ,0 ,0, 0
22 ,16050783, 0|0:404 ,0 ,0|1:31 ,1|0:51, 0

시도해 보았지만 grep -e '0|0:' -e '1|1:' -e '0|1:' -e '1|1 /path/file.csv작동하지 않는 것 같습니다.

답변1

원래 명령줄

다음 명령줄은 "문제가 있는" 줄을 건너뛰고 쉼표로 구분된 파일로 이 작업을 수행할 것이라고 생각합니다.

grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv

작은 파일도 색상으로 확인할 수 있고,

grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

발견된 라인 grep(이전 명령줄의 옵션을 통해 제외됨 -v),

grep -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'

다음 명령줄은 탭으로 구분된 파일을 사용하여 이 작업을 수행합니다.

grep -v -e '\t[2-9]|' -e '|[2-9]:' Reddy.tab

또는 약간 더 느슨한 검사를 원하는 경우 다음 명령줄을 사용할 수 있습니다.

grep -v -e '[2-9]|' -e '|[2-9]:' Reddy.tab file.csv

OP의 의견에 대한 명령줄 응답

아래 명령줄은 OP가 원하는 쉼표로 구분된 파일과 탭으로 구분된 파일을 수행할 것이라고 생각합니다.

sed -e 's/[2-9]|[0-9]:[0-9]*/NA/' -e 's/[0-9]|[2-9]:[0-9]*/NA/' file.csv

답변2

grep이것이 요구 사항인지 확실하지 않지만 을 사용하면 perl다음을 수행하여 원치 않는 항목을 제거할 수 있습니다.

perl -pe 's/, ?[2-9]\d*\|\d+:\d+//g; s/, ?\d+\|[2-9]\d*:\d+//g' /path/to/file.csv

답변3

나는 노력할 것이다

grep -e '[01]|[01]:' 

0 또는 1을 의미 |하므로 이스케이프되어야 합니다 .0|1

알아채다

grep -e '0|0:' -e '1|1:' -e '0|1:' -e '1|1:'

동일하게 일치합니다.

열을 필터링하려면 다음을 수행합니다.

awk -F, '$3 ~/[01]|[01]:/ '

$3번째 열은 입니다.

열 3 이상을 필터링하세요.

awk -F, '{printf "%s,%s",$1,$2 ; 
      for(i=3;i<=NF;i++) 
        if ( $i  ~ /[01]\|[01]:/) 
           printf ",%s",$i ; 
      printf "\n" }' 

연속적으로 있을 수 있습니다.

  • |이 경우 이스케이프가 필요합니다 .
  • 또한 첫 번째 행은 필터링됩니다.

    chr22,Position
    22,16050115,0|0:404,1|1:5
    22,16050213,0|0:403
    22,16050607,1|0:340,1|1:3,1|1:3
    22,16050737,0|0:402
    22,16050783,0|0:404,0|1:31,1|0:51
    

관련 정보