Удалить строки, которые соответствуют строке перед запятой

Удалить строки, которые соответствуют строке перед запятой

Я новичок в bash-скриптинге, поэтому любая помощь будет оценена по достоинству. Ниже приведено то, чего я хочу добиться.

У меня есть два текстовых файла. Я хочу удалить все строки в первом файле, где они совпадают с любой моей строкой во втором файле перед запятой.

например

Файл 1:

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

Файл 2:

this_is_a_test.txt
this_is_a_test24.txt
this_is_a_test22

Желаемый результат: Пусто

решение1

Вы можете использовать:

grep -vFf file2 file1

Имейте в виду, что он все равно удалит строки, хотя совпадения есть после запятой.

решение2

sedЭто можно сделать с помощью простого трюка.

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

Связанный контент