Primeiro, a entrada deve ser ordenada ao contrário. Não adianta remover / etc e depois procurar por / etc / group. Em seguida, verificamos se o arquivo pode ser gravado (se não for pular). Então ONE_PATH deve ser escapado e, em seguida, sed pode fazer o seu trabalho,
sort -r common.txt \
| while read -r ONE_PATH
do
for ONE_FILE in host1.txt host2.txt host3.txt
do
if [ -w "$ONE_FILE" ]
then
# sed -i '\:'"$ONE_PATH"':d' "$ONE_FILE"
ONE_PATH_ESC=$(echo "$ONE_PATH" | sed "s!/!\\/!g")
sed -i 's/^'"$ONE_PATH_ESC"'//' "$ONE_FILE"
fi
done
done
Com os dados de teste fornecidos, você recebe:
$ pr -n host1.txt
1 /root/.bashrc
2
3 /hosts
4 /bin/true
5
6 /sbin/rtmon
7
Existem 3 linhas vazias.