Seu comando sed
não funciona porque, durante o loop, cada vez que ele lê uma linha, ele exclui essa linha (e somente essa linha) do arquivo de entrada completo, enviando-a para /home/dummy
. Isso significa que o arquivo de saída é sobrescrito a cada vez. Portanto, a primeira iteração do loop remove a linha que começa com 123, , mas a segunda iteração usa o arquivo original completo que ainda inclui essa linha.
Experimente grep
:
grep -vFf /home/InputData.txt /home/Datatodelete.txt > /home/dummy
De man grep
:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. The empty file
contains zero patterns, and therefore matches nothing. (-f is
specified by POSIX.)
-v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v
is specified by POSIX.)