Como eu uso cada linha de um arquivo de texto para selecionar linhas com uma string correspondente em um segundo arquivo de texto? [duplicado]

0

Suponha que eu tenha dois arquivos de texto - active-users.txt e all-user-info.txt

active-users.txt contém apenas userIDs numéricos.

all-users.txt contém userIDs e campos de informações adicionais.

O que eu preciso fazer é criar um terceiro arquivo de texto que contenha a linha completa de informações para cada userID em active-users.txt ...

Eu tentei o seguinte, em um script bash e na linha de comando:

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

O bit quebrado que está me deixando louco é que o arquivo de saída active-user-info.txt sempre contém todo o conteúdo de todo o user-info.txt - e eu esperaria que ele contivesse apenas as linhas, incluindo os userIDs em activeUsers.txt

O que estou perdendo?

    
por D Mooney 11.10.2016 / 18:00

2 respostas

0

Isso funcionou para mim com arquivos de teste

while read LINE; do
    grep "$LINE" all-users.txt >>active-users-info.txt
done <active-users.txt
    
por 11.10.2016 / 19:37
0

Assumindo que active-users.txt não tenha linhas em branco:

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

Se active-users.txt tiver uma ou mais linhas em branco:

grep '.' active-users.txt | grep -f - all-users.txt > active-users-info.txt
    
por 11.10.2016 / 21:21