
Я новичок в 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