2013-04-05 2 views
0

나는 다음과 같은 형식 라인의 수백만을 가진 파일이 있습니다하나의 열을 기준으로,>이 개 중복 모든 라인을 유지

SN608 VB050 1  1113 1699.50 2339.90 0  1  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCGTCAATTTTTTAAAAAAAACCCCCGGGGGGTAGTTTGTTAAAA a[_ceeeegggfgiiigecccccccccccccccccccccbcccccccccccTTEHGGHHGJHGJSRGEGGJY]]]TX[[[XEEOX[EEEGGJGGGGJS] 1 

내가 sort -k9를 사용하여 열 아홉하여 분류했다. 열 9는 100 자의 문자열이지만 일부 항목은 마침표가있을 수 있습니다. 이제 열 9의 100 자 문자열이 1 또는 2 번 (< 3 번) 발생하는 줄을 제거하고 다른 모든 줄을 파일에 저장합니다.

나는 uniq ( -d -f9 -w100)와 sort 주변에 놀고 도움이 될 것입니다 awk을 의심하지만, 나는 이것을 알아 내기 위해 초보자 너무 많이입니다.

답변

1

dupsoutfile에서 제 1 및 제 2 경기와 모든 다른 경기를 저장합니다 :

awk '++a[$9]>2{print $0>"dups";next}1' file > outfile 
+0

감사합니다! 이것은 현재 내 목적에 잘 맞지만, 3 개 이상의 경기가있을 때 첫 번째 경기와 두 번째 경기를 버리기를 원하지 않는다면 어떻게해야합니까? – user2250055

+0

@ user2250055 그건 내 원래의 대답이었습니다. 지금 당장 문제가 해결되면 옆에있는 체크 표시를 눌러이 대답을 수락하십시오. –

+0

나는 이것이 더 가까웠다 고 생각한다.'awk '++ [$ 9]> 2'infile> outfile'. 그것은 두 번 이상 반복 된 문자열을 성공적으로 저장하지만, 의미 한 것은 출력에서 ​​두 번 이상 반복되는 첫 번째 및 두 번째 일치를 유지하는 것입니다 (3 ~ n 번째 일치는 제외). 다른 대답 ('awk '++ [$ 9]> 2 {print $ 0> "dups"; 다음} 1'file> outfile')은 2보다 큰 중복을 제거하는 것처럼 보입니다. – user2250055

관련 문제