3.3 텍스트 파일의 교차 및 차집

1765 단어
Linux Shell 스크립트 공략(2판) 독서 노트comm 명령은 두 파일 간의 비교에 사용할 수 있습니다.다음과 같은 작업을 수행할 수 있습니다.
  • 교차(intersection): 두 파일의 공통된 줄을 출력합니다.
  • 차(difference): 지정한 파일에 포함된 서로 다른 줄을 출력합니다.
  • 차집합(set difference): 파일 A에 포함되지만 다른 지정된 파일에 포함되지 않은 행을 인쇄합니다.

  • 참고: comm 순서가 지정된 파일을 입력으로 사용해야 합니다.
    기존 A.txt, B.txt 두 파일
    $ sort A.txt -o A.txt ; sort B.txt -o B.txt #   
    $ cat A.txt
    apple
    gold
    iron
    orange
    silver
    steel
    $ cat B.txt
    carrot
    cookies
    gold
    orange
    

    옵션이 없는comm 명령 실행하기

    $ comm A.txt B.txt
    apple
            carrot
            cookies
                    gold
    iron
                    orange
    silver
    steel
    
  • 첫 번째 열은 A.txt 파일에만 나타나는 행을 포함합니다.
  • 두 번째 열은 B.txt 파일에만 나타나는 행을 포함합니다.
  • 세 번째 열은 A.txt와 B.txt의 같은 줄을 포함한다.
  • 각 열은 탭 문자(\t로 경계를 정한다.

  • 두 파일의 교차 인쇄

    $ comm -1 -2 A.txt B.txt
    gold
    orange
    
  • -1 첫 번째 열 삭제
  • -2 두 번째 열 삭제
  • 두 파일 중 다른 줄을 인쇄하기 (차 구하기)

    $ comm -3 A.txt B.txt
    apple
            carrot
            cookies
    iron
    silver
    steel
    
    #        
    $ comm -3 A.txt B.txt | sed 's/^\t//'
    apple
    carrot
    cookies
    iron
    silver
    steel
    
    # OS X        
    $ comm -3 A.txt B.txt | tr "\t" "\0"
    
    sed 's/^\t//':sed는 '비 상호작용적' 문자 흐름을 위한 편집기입니다.
  • s는 교체(substitute)를 나타낸다.
  • /^\t/는 줄 앞의 \t^와 일치한다.
  • //는 행수를 바꾸는 데 쓰인다\t.

  • 차집

  • A.txt의 차집
  • $ comm -2 -3 A.txt B.txt
    #          
    
  • B.txt의 차집
  • $ comm -1 -3 A.txt B.txt
    #          
    

    좋은 웹페이지 즐겨찾기