Exclua as linhas que correspondem a uma string antes da vírgula

Exclua as linhas que correspondem a uma string antes da vírgula

Eu sou muito novo em scripts bash e qualquer ajuda seria muito apreciada. Abaixo está o que eu quero alcançar.

Eu tenho dois arquivos de texto. Quero excluir todas as linhas do primeiro arquivo que correspondam a qualquer uma das minhas strings 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

Responder1

Você pode usar:

grep -vFf file2 file1

Cuidado para que ele ainda exclua linhas, embora correspondam após a vírgula.

Responder2

Um truque simples sedpode fazer isso.

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

informação relacionada