Como escrever em novo arquivo se são ocorrências em outro?

0

Eu preciso criar e escrever em um novo arquivo baseado em ocorrências encontradas em outro arquivo. ou seja:

Occurrence found in first file
then write same Occurrence in another one/new

para ser mais específico:

"Arquivo1": para localizar ocorrências:

Occurrence1
Occurrence2
OccurrenceN

##If the 'Occurence1' is find in 'File1' then write in the 'new file' the same Occurrence

Eu tenho o próximo comando funcional em ksh para especificar as ocorrências no arquivo e quantas não:

users=(Occurrence1 Occurrence2 Occurrence3 Occurrence4 ... OccurrenceN)
for i in "${users[@]}"
do
grep -qw $i file1 && echo "$i is in the file" || echo "$i is not in the file"
done

Eu faço algumas modificações no código inicial:

users=(Occurrence1 Occurrence2 Occurrence3 ... OccurrenceN)
for i in "${users[@]}"
do
        grep -qw $i File1.txt && echo "$i is in the file" || echo "$i is not in the file"
       if [[ $user = "*is in the file" ]]; then
       echo $user >> users_in_file.txt
       elif [[ $user = "*is not in the file" ]]; then
       echo $user >> users_not_in_file.txt
       fi
done

Eu tenho a ideia de implementar o último comando para atingir meu objetivo, mas não está funcionando. Existe outro para fazer isso? Desde já, obrigado. Qualquer dúvida, por favor poste como um comentário.

    
por Mareyes 22.08.2018 / 21:21

1 resposta

2

Você pode usar grep diretamente como condição de if e prosseguir de acordo:

users=(Occurrence1 Occurrence2 Occurrence13  OccurrenceN)
for i in "${users[@]}"
do
       if grep -qw "$i" File1.txt; then
                echo "$i is in the file"
                echo "$i" >> users_in_file.txt
       else
                echo "$i is not in the file"
                echo "$i" >> users_not_in_file.txt
       fi
done
    
por 22.08.2018 / 21:36