![텍스트 파일의 각 줄을 사용하여 일치하는 문자열이 있는 두 번째 텍스트 파일의 줄을 선택하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/96225/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EA%B0%81%20%EC%A4%84%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A4%84%EC%9D%84%20%EC%84%A0%ED%83%9D%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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