Я использую следующий код и, похоже, не могу заставить searchterm соответствовать строке с несколькими строками., заменяя строку несколькими строками во многих файлах
!/bin/bash
# **************** Change Variables Here ************
startdirectory="/home/www"
searchterm="<img src=\"index.gif\">
<p>Hello World</p>
"
replaceterm="Hi"
# **********************************************************
i=0;
for file in $(grep -l -R $searchterm $startdirectory)
do
cp $file $file.bak
sed -e "s/$searchterm/$replaceterm/ig" $file > tempfile.tmp
mv tempfile.tmp $file
let i++;
echo "Modified: " $file
done
echo " *** All Done! *** Modified files:" $i
'sed' в основном работает по одной линии за раз. Возможно поиск нескольких строк, но достаточно сложная работа, которую вы обычно не делаете. Вам нужно перейти на более мощный язык - возможно, Perl или Python. Вероятно, вы могли бы сделать это в 'awk'; это было бы проще, чем 'sed', но сложнее, чем Perl или Python. –