Сore dump

guest888
Дата: 14.01.2010 01:16:28
В скрипте есть код переносящий все данные из одного файла ($tempfile1)
в определённое место (${templ}) другого файла ($tempfile2)

while read ins
do
cat $PTHTM |sed "s|${templ}|${ins}|" > $tempfile2
cat $tempfile2 >$PTHTM
done <$tempfile1


И если файл $tempfile1 маленький , т.е. или мало строк или строки короткие то всё OK

иначе Сore dump вылазит по памяти

Что бы это значило?
Help me please
--null--
Дата: 14.01.2010 09:42:13
Скорее всего, проблема именно когда строки слишком длинные (а сколько? и какой размер файла?) и валится в корку sed, ибо больше вроде нечему.
guest888
Дата: 14.01.2010 12:30:15
Я тоже думал , что из за длинны строк но окзалось что и когда много строк то тоже самое.
Может как то по другому можно втавить один файл в другой?

А так тоже вываливалось но чаще: :)

insrez=`sed 's|$|<br>|' $tempfile1`
cat $PTHTM |sed "s|${templ}|`echo ${insrez}`|" > $tempfile2
cat $tempfile2 >$PTHTM
--null--
Дата: 15.01.2010 12:25:23
получается что shell валится при переборе большого файла. Странно.

Тогда наверное придётся тупо катить
если просто вместо одной строки - то так

{
cat $tempfile2 | sed -ne "1,/$templ/p" | grep -v $templ
cat $tempfile1
cat $tempfile2 | sed -ne "/$templ/,\$p" | grep -v $templ
} > final.txt
Мутаген
Дата: 15.01.2010 13:22:26
заменить это
cat $PTHTM |sed "s|${templ}|${ins}|" > $tempfile2
на это
perl -p "s|${templ}|${ins}|" < $PTHTM > $tempfile2
guest888
Дата: 15.01.2010 23:15:40
Спасибо всем откликнувшимся- но для меня пока не просто понять все єти варианты.

Сейчас почти уверен что проблема в том что после n-й вставки результирующая
строка слишком длинная.

В CentOS-5.1
если вставляю перед sed выражение добавляющее перевод строки
ins="\n${ins}"
то строка переводится перед вставкой в нужное место ${ins}"

но
на HP-UX (другая машина и другая версия ЧЕГО ТО ????- сорри за безграмотность)
это не работает - просто добавляется 'n' к строке и НЕ валится в core но и всё не выводит- только часть( не считал сколько символов). T.е. \n что то ради меня делает. :)

Каким то ещё способом(более надёжным) перевести строку можно?

Спасибо заранее.