How to use comm in Unix
shell 상에서 뭔가 비교할 일이 자주 생기는데 그 때마다 shell을 잘 모르니 스크립트를 만들어서 비교했습니다. 무언가 좋은 방법이 없을까 찾다가 comm 이라는 명령을 알았습니다.
제가 사용한 comm 버전은 6.10 입니다.
comm 은 간단히 설명하자면 newline (\n)으로 구분된 텍스트 데이터 파일을 비교하는 기능을 합니다. 조건은 비교할 파일들이 정렬되어 있어야 한다는 것입니다. (sort 등으로)
a 파일내용
b 파일내용
먼저 comm 기본적인 사용결과입니다.
a 에만 존재하는 내용이 가장 왼쪽, 둘 모두에 있는 내용이 가장 오른쪽, b 에만 존재하는 내용이 가운데의 순서로 결과가 출력됩니다.
comm 에는 세가지 옵션이 있습니다. 1, 2,3
먼저 옵션 1 입니다. b에 속한 내용이 중복된 것, b에만 있는 것 순서로 출력됩니다.
옵션 2는 a에 속한 내용이 a에만 있는 것, 중복된 것 순서로 출력됩니다.
옵션 3은 a, b 각자에만 속한 것들을 출력합니다.
여러가지 옵션을 섞어 쓸 수 있습니다.
1과 3을 쓰면 1 && 3 이라고 할 수 있습니다. b에만 속한 것이 출력됩니다.
2와 3을 쓰면 a에만 속한 것이 출력됩니다.
제가 사용한 comm 버전은 6.10 입니다.
$ comm --version
comm (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard Stallman and David MacKenzie.
comm (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard Stallman and David MacKenzie.
comm 은 간단히 설명하자면 newline (\n)으로 구분된 텍스트 데이터 파일을 비교하는 기능을 합니다. 조건은 비교할 파일들이 정렬되어 있어야 한다는 것입니다. (sort 등으로)
a 파일내용
1
2
3
4
5
6
2
3
4
5
6
b 파일내용
5
6
7
8
9
0
6
7
8
9
0
먼저 comm 기본적인 사용결과입니다.
a 에만 존재하는 내용이 가장 왼쪽, 둘 모두에 있는 내용이 가장 오른쪽, b 에만 존재하는 내용이 가운데의 순서로 결과가 출력됩니다.
$ comm a b
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
comm 에는 세가지 옵션이 있습니다. 1, 2,3
먼저 옵션 1 입니다. b에 속한 내용이 중복된 것, b에만 있는 것 순서로 출력됩니다.
$ comm -1 a b
5
6
7
8
9
0
5
6
7
8
9
0
옵션 2는 a에 속한 내용이 a에만 있는 것, 중복된 것 순서로 출력됩니다.
joo8111@joo8111-desktop:~/Documents/etc/learn_shell$ comm -2 a b
1
2
3
4
5
6
1
2
3
4
5
6
옵션 3은 a, b 각자에만 속한 것들을 출력합니다.
joo8111@joo8111-desktop:~/Documents/etc/learn_shell$ comm -3 a b
1
2
3
4
7
8
9
0
1
2
3
4
7
8
9
0
여러가지 옵션을 섞어 쓸 수 있습니다.
1과 3을 쓰면 1 && 3 이라고 할 수 있습니다. b에만 속한 것이 출력됩니다.
joo8111@joo8111-desktop:~/Documents/etc/learn_shell$ comm -13 a b
7
8
9
0
7
8
9
0
2와 3을 쓰면 a에만 속한 것이 출력됩니다.
joo8111@joo8111-desktop:~/Documents/etc/learn_shell$ comm -23 a b
1
2
3
4
1
2
3
4
반응형