반응형
바시에서 두 목록의 교차점
저는 두 개의 목록에 있는 내용을 나열하는 간단한 스크립트를 작성하려고 합니다.단순화하기 위해 els를 예로 들어 보겠습니다."하나"와 "둘"이 디렉토리라고 상상해 보십시오.
one=''ls one''two=''ls 2''교차로 1달러 2달러
저는 아직 바시에서 꽤 미숙합니다. 그러니 제가 어떻게 하고 있는지 자유롭게 수정하세요.모든 파일을 "하나"와 "둘"로 출력하는 명령어가 필요합니다.둘 다 존재해야 합니다.당신은 이것을 "하나"와 "둘" 사이의 "교차점"이라고 부를 수 있습니다.
comm -12 <(ls 1) <(ls 2)
를 사용한 솔루션
comm
훌륭하지만 실제로 정렬된 목록과 함께 작동해야 합니다.그리고 다행히도 여기서 우리는ls
다음은 GNU Coreutils 문서에서 확인할 수 있습니다.
기본적으로 출력은 유효한 로케일 설정에 따라 알파벳 순으로 정렬됩니다.
comm -12 <(ls one) <(ls two)
대체 기능:sort
두 리스트의 교차점:
sort <(ls one) <(ls two) | uniq -d
두 리스트의 대칭 차이:
sort <(ls one) <(ls two) | uniq -u
보너스
가지고 놀기 ;)
cd $(mktemp -d) && mkdir {one,two} && touch {one,two}/file_{1,2}{0..9} && touch two/file_3{0..9}
다음 명령을 사용합니다.
ls one | sort > /tmp/one_list
ls two | sort > /tmp/two_list
comm -12 /tmp/one_list /tmp/two_list
"sort"는 별로 필요하지 않지만, 만약을 위해 "comm"을 사용하기 전에 항상 포함합니다.
효율성이 낮은(Common보다) 대안:
cat <(ls 1 | sort -u) <(ls 2 | sort -u) | uniq -d
조인은 입력 및 원하는 출력에 따라 또 다른 좋은 옵션입니다.
join -j1 -a1 <(ls 1) <(ls 2)
언급URL : https://stackoverflow.com/questions/2696055/intersection-of-two-lists-in-bash
반응형
'programing' 카테고리의 다른 글
Git로 대용량 이진 파일 관리 (0) | 2023.04.27 |
---|---|
ngFor(인덱스를 속성 값으로 사용) (0) | 2023.04.27 |
ASP에서 역할을 생성하는 방법.NET Core를 사용자에게 할당하시겠습니까? (0) | 2023.04.27 |
텍스트 블록에서 줄 간격을 변경하는 방법 (0) | 2023.04.27 |
엑셀에 있는 행들만 필터링되지 않는 하나의 합은 어떻게 됩니까? (0) | 2023.04.27 |