연결 문제: 오류 발생, 추가 피연산자 연결

연결 문제: 오류 발생, 추가 피연산자 연결

고유한 값이 정렬되어 있고(파일에 하나의 값 열만 있음에도 불구하고) 동일한 접두사(예: "usi")로 시작하는 열에 3개의 파일을 결합하고 싶습니다.

이제 내가 할 때

join -j 1 ../Test_Data/usi* > ../Test_Data/join_output.txt

다음 오류를 발견했습니다.

join: extra operand `usi_rtree_lw_100000.txt'
Try `join --help' for more information.

어떤 아이디어가 있나요?

답변1

join가입하려면 파일 2개만 수락하세요. 3개의 파일을 작업하려면 2번의 호출을 사용해야 합니다 join.

join -j 1 <(join -j 1 ../Test_Data/usi-1 ../Test_Data/usi-2) ../Test_Data/usi-3 > ../Test_Data/join_output.txt

bash프로세스 대체를 사용하기 때문에 위의 명령이 필요합니다 . 다른 쉘을 사용하는 경우 어떤 쉘을 지정하십시오.

고쳐 쓰다댓글을 기준으로 합니다.
파일 이름 패턴만 알고 정확한 파일 이름을 모르는 경우 셸에서 패턴을 확장하고 확장된 목록을 배열로 캡처한 다음 배열 요소를 인수로 사용합니다.

file=(../Test_Data/usi*)
join -j 1 <(join -j 1 "${file[0]}" "${file[1]}") "${file[2]}"

답변2

POSIX쉘 변형직원답변:

  1. printf '"%s" ' ../Test_Data/usi* | { read a b c ; join $a $b | join - $c ; }

  2. set -- ../Test_Data/usi* ; join "$1" "$2" | join - "$3"

관련 정보