특정 열의 단어가 중복되면 해당되는 라인 지우는 명령어 또는 스크립트에 대해서 질문드립니다.
글쓴이: lightoml / 작성시간: 토, 2007/10/13 - 12:27오후
방대한 양의 데이터를 처리하고 있는데요.. 조언을 얻고자 글을 씁니다.
가령 데이터들이 아래와 같이 여러 열로 이루어져 있다고 할 때..
7613 1 4 4
3463 2 5 9
7898 3 6 1
1111 3 4 4
1111 5 4 8
1111 1 4 4
3463 1 6 2
1213 6 4 4
5616 1 3 2
이 세줄이 첫째 열이 중복이 되는데요.. 이 줄 전체를 지워버리고 중복 안되는 라인만 남길 수 있을까요
1111 3 4 4
1111 5 4 8
1111 1 4 4
uniq 명령어는 전체 라인이 똑같아야 지워지는 것 같아서 조건에 맞게 사용하기가 어렵네요..
혹시 아시는 분 계시면 답변 부탁드립니다.
-----------------------------------------------------------------------------------------------
한가지 더 질문 드립니다.
위의 예에서 중복된 라인을 모두 지우지 않고 맨 위에 한 개만 남기려면 어떻게 해야 하나요?
가능은 할까요?
Forums:
cat data.txt | uniq -u -w
cat data.txt | uniq -u -w 1
위와 같이 하면, 다음처럼 출력이 나옵니다. (자세한 설명은 man uniq 참고하세요.)
7613 1 4 4
3463 2 5 9
7898 3 6 1
3463 1 6 2
1213 6 4 4
5616 1 3 2
다만, 3463이 들어있는 줄들은 서로 이웃해있지 않기 때문에 지워지지 않습니다.
--------------------Signature--------------------
"What can change the nature of a man?"
답변 감사드립니다.
그런데 man을 확인해 보니, uniq -u -w 4 라고 해야 되는 것 아닌가요?
글자 크기가 4인 것만 비교해야 되는 것이 아닌지 모르겠네요..
네, uniq -u -w 4 가
네, uniq -u -w 4 가 맞습니다.
w 가 word 의 약자인걸로 착각을 했네요.
--------------------Signature--------------------
"What can change the nature of a man?"
댓글 달기