Por que você não rebenta $file1
em muitos outros menores (em / tmp ou use mktemp), então percorre cada $file1
, usando para o grep ... qual o tamanho ideal do arquivo padrão ( $file1
) depende do seu sistema.
Aqui, cada $file1
terá 1000 linhas.
i=1
while [ $i -lt $count ]
do sed -n "$i,$(($i +1000))p" file1.txt >> /tmp/file${1}.txt
i=$(( $i + 1001))
done
Agora você tem um monte de arquivos em / tmp chamados file.txt, então você faz:
for file1 in $(ls /tmp/file*.txt)
do
grep -vwFf $file1 file2
done
Safer com mktemp:
TEMP_DIR=$(mktemp)
for file1 in $(ls ${TEMP_DIR}/file*.txt)
do
grep -vwFf $file1 file2
done