Вам нужно беспокоиться о косых чертах в заменяемом тексте.
- Либо: используйте '
\/
' для каждой косой черты,
- Или: обмануть и использовать '
.
', чтобы найти любой символ в точке, где должна появиться косая черта.
Альтернатива использует невероятность файла, содержащего HTML. Теоретически, если вам не нравится второй вариант, вы также должны использовать «\.
» в каждой точке, где «.
» появляется в строке, которую вы просматриваете.
sed -e 's/<SCRIPT LANGUAGE="JavaScript" TYPE="text.javascript" SRC=".height.js"><.SCRIPT>/ /' file_names
Это скопировано из вашего примера и косые черты заменены точками. Однако, указав все имена файлов в командной строке таким образом, вы просто запишите выходные данные как объединение всех отредактированных файлов в стандартный вывод.
Классически, чтобы редактировать файлы более или менее на месте, вы должны написать:
tmp=${TMPDIR:-/tmp}/xxx.$$
trap 'rm -f $tmp; exit 1' 0 1 2 3 13 15
for file in ...list...
do
sed -e '...' $file > $tmp
mv $tmp $file
done
rm -f $tmp
trap 0
Это включает в себя достаточно пуленепробиваемую очистку временного оборудования - оно не идеально. Этот вариант создает резервную копию оригинала, а затем заменяет его отредактированной версией:
tmp=${TMPDIR:-/tmp}/xxx.$$
trap 'rm -f $tmp; exit 1' 0 1 2 3 13 15
for file in ...list...
do
sed -e '...' $file > $tmp
mv $file $file.bak
mv $tmp $file
done
rm -f $tmp
trap 0
В GNU sed
вы можете использовать опцию '-i
' или '--in-place
' для перезаписи файлов; Вы можете использовать '--in-place=.bak
' для создания резервных копий каждой file
в file.bak
.