Verifique também esta solução simples do awk. Removerá a string não importa onde esteja e deverá ser portátil:
$ a="test.xyz|test3.abc|test5232.lop|filename.test|file.text|qwerty.bat"
$ awk -F"test5232.lop." '{printf("%s%s\n",$1,$2)}' <<<"$a"
test.xyz|test3.abc|filename.test|file.text|qwerty.bat
Sobre sua solicitação de edição no local, versão GNU AWK > 4.1 também pode fazer edições internas de acordo com para analisar o manual:
awk -i inplace -v INPLACE_SUFFIX=.bak '{...}'
Mas, em qualquer caso, nem o awk nem o sed nem o perl podem conseguir uma edição real no local. As Páginas de Informações do GNU sed
esclarecem este problema para nós:
'-i[SUFFIX]'
'--in-place[=SUFFIX]'
This option specifies that files are to be edited in-place. GNU
'sed' does this by creating a temporary file and sending output to
this file rather than to the standard output.(1).
Significa que você pode usar qualquer solução aqui, adicionando no final algo assim:
awk/sed/perl/whatever oldfile >tmpfile && mvtmpfile oldfile && rm -f tmpfile