두 줄이 모두 같은 이름으로 시작하면 해당 줄을 선택하세요.

두 줄이 모두 같은 이름으로 시작하면 해당 줄을 선택하세요.

다음과 같은 테이블이 있습니다.

     name                             something 
1    100036498|F|0--20:T>G            something
2    100036501|F|0--44:C>T            something     
3    100036501|F|0-44:C>T-44:C>T      something   
4    100036508|F|0--66:T>G            something  
5    100036508|F|0-66:T>G-66:T>G      something  
6    100036511|F|0-19:G>A-19:G>A      something 
7    100036516|F|0--15:T>G            something 
8    100036516|F|0-15:T>G-15:T>G      something 
           ...                         ....

내 문제를 더 쉽게 이해할 수 있도록 줄 번호를 추가했습니다. 2행과 3행, 4행과 5행, 7행과 8행 등 동일한 번호로 시작하는 행 쌍이 있습니다. 1행, 6행과 같이 고유한 행도 있습니다. 쌍이 있는 행만 유지하고 싶습니다. 즉, 쌍이 없는 행을 제거하여 다음과 같은 테이블을 만들고 싶습니다.

     name                             something 
2    100036501|F|0--44:C>T            something     
3    100036501|F|0-44:C>T-44:C>T      something   
4    100036508|F|0--66:T>G            something  
5    100036508|F|0-66:T>G-66:T>G      something   
7    100036516|F|0--15:T>G            something 
8    100036516|F|0-15:T>G-15:T>G      something 
           ...                         ....

나는 리눅스 명령과 비슷한 반대 명령을 원한다고유한첫 번째 열의 숫자만 고려되며 기호 뒤의 나머지 숫자는 고려되지 않습니다.|.

무엇을 해야할지 아시나요?

아래에는 공백으로 구분된 열이 있고 쉽게 복사할 수 있도록 헤더가 없는 동일한 첫 번째 테이블이 있습니다.

100036498|F|0--20:T>G something
100036501|F|0--44:C>T something     
100036501|F|0-44:C>T-44:C>T something
100036508|F|0--66:T>G something
100036508|F|0-66:T>G-66:T>G something
100036511|F|0-19:G>A-19:G>A something
100036516|F|0--15:T>G something
100036516|F|0-15:T>G-15:T>G something 

답변1

다음은 여러 번 반복되는 행을 유지하는 솔루션입니다 awk. 행을 두 번만 반복하려면 다음 >1으로 변경하세요.==2

awk -F'|' 'NR==FNR{s[$1]++;next} (s[$1]>1)' infile infile
100036501|F|0--44:C>T            something
100036501|F|0-44:C>T-44:C>T      something
100036508|F|0--66:T>G            something
100036508|F|0-66:T>G-66:T>G      something
100036516|F|0--15:T>G            something
100036516|F|0-15:T>G-15:T>G      something

관련 정보