Apagar linhas que correspondem a uma string antes de vírgula

1

Eu sou muito novo no bash scripting e, portanto, qualquer ajuda seria muito apreciada. Abaixo está o que eu quero alcançar.

Eu tenho dois arquivos de texto. Eu quero excluir todas as linhas no primeiro arquivo onde ele corresponde a qualquer uma das minhas seqüências no segundo arquivo antes da vírgula.

por exemplo.

Arquivo 1:

this_is_a_test.txt,11dsdsdsdsd
this_is_a_test24.txt,545467ddd
this_is_a_test22,121244442

Arquivo 2:

this_is_a_test.txt
this_is_a_test24.txt
this_is_a_test22

Saída desejada: Em branco

    
por Mr.Eva 07.04.2017 / 14:37

2 respostas

0

Você pode usar:

grep -vFf file2 file1

Tenha em atenção que ainda elimina linhas, embora correspondam após a vírgula.

    
por 07.04.2017 / 15:14
0

Um truque simples de sed pode fazer isso.

IFS='
' # If whitespaces exist in file 2
cat file2.txt | while read i; do
  sed -i '/^'"$i"',/d' file1.txt
done
    
por 07.04.2017 / 15:18