텍스트 파일의 각 줄을 사용하여 일치하는 문자열이 있는 두 번째 텍스트 파일의 줄을 선택하려면 어떻게 해야 합니까? [복사]

텍스트 파일의 각 줄을 사용하여 일치하는 문자열이 있는 두 번째 텍스트 파일의 줄을 선택하려면 어떻게 해야 합니까? [복사]

active-users.txt와 all-user-info.txt라는 두 개의 텍스트 파일이 있다고 가정해 보겠습니다.

active-users.txt에는 숫자로 된 사용자 ID만 포함됩니다.

all-user.txt에는 사용자 ID 및 기타 정보 필드가 포함되어 있습니다.

내가 해야 할 일은 active-users.txt의 각 사용자 ID에 대한 전체 정보 줄을 포함하는 세 번째 텍스트 파일을 만드는 것입니다...

Bash 스크립트와 명령줄에서 다음을 시도했습니다.

for i in $(< active-users.txt)
do
grep $i all-users.txt >> active-user-info.txt
done

나를 미치게 만드는 문제는 active-user-info.txt 출력 파일에 항상 all-user-info.txt의 모든 내용이 포함되어 있다는 것입니다. 그리고 나는 여기에 activeUsers의 userID가 포함된 행만 포함되기를 원합니다. txt

내가 무엇을 놓치고 있나요?

답변1

가설활성 사용자.txt빈 줄 없음:

grep -f active-users.txt all-users.txt > active-users-info.txt

만약에활성 사용자.txt하나 이상의 빈 줄이 있습니다:

grep '.' active-users.txt | grep -f - all-users.txt > active-users-info.txt

답변2

이것은 내 테스트 파일에서 작동합니다.

while read LINE; do
    grep "$LINE" all-users.txt >>active-users-info.txt
done <active-users.txt

관련 정보