LINUX.ORG.RU

Сообщения Redf

 

Как объединить несколько строк в одну?

Есть текстовый файл, который содержит строки вида:

С сожалением сообщаю,
что мисс Каллен и ее команда
получили тревожные результаты.
Как объединить строки, чтобы:
С сожалением сообщаю, что мисс Каллен и ее команда получили тревожные результаты.
Т.е., одно предложение, заканчивающееся точкой - одна строка.

 , ,

Redf
()

Как оптимизировать скрипт и избежать ошибки сегментирования?

Есть быдлокод юного линуксоида. Незамысловатый чат-бот. Время от времени выдаёт ошибку сегментирования. Количество слов, на которые скрипт реагирует - сотни. Как оптимизировать, уважаемые гуру?

#!/bin/bash
 
while [ 1 ]
do

INDEXURL="http://blabla.com/index.php"
TARGTURL="http://blabla.com/chat.php" # Линк на чат
USRAGENT="Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
# USERNAME="Pupkin"

curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -o cha.html $TARGTURL &> /dev/null 
oldmsg=$(grep 'javascript' cha.html | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/Pupkin:/d' | head -n1 | cut -d':' -f3 | cut -c 2-) # находим самое свежее msg чата, исключая своё.
echo "$(date '+%H:%M:%S') $oldmsg"

sleep 60
curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -o cha.html $TARGTURL &> /dev/null 
newmsg=$(grep 'javascript' cha.html | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/Pupkin:/d' | head -n1 | cut -d':' -f3 | cut -c 2-) # ждём минуту, не скажет ли кто-нибудь что-нибудь
echo "$(date '+%H:%M:%S') $newmsg"
echo ""

if [[ "$oldmsg" != "$newmsg" ]] # если сказал, то
then

elif echo $newmsg | grep -i -s -q -E 'зд.ров|привет|драту|'^хай.'|хаюш'
then
pr2=("И Вам!" "Привет!" "Здрасьте!" "Приветики!")
rotv=${pr2[$RANDOM % ${#pr2[@]} ]} # рандомный ответ

elif echo $newmsg | grep -i -s -q -E 'адиос|бывай|встречи|свидания|скорого|досвидос|пока|увидимся|оставить|откланяться|вернусь'
then
bbl=("Пока!" "Увидимся!" "Берегите себя." "До свидания!" "Вы как хотите, а я остаюсь." "Гудбай!" "Пока, было приятно поболтать!")
rotv=$bbl[$RANDOM % ${#bbl[@]} ]} # рандомный ответ

############## ЕЩЁ НЕСКОЛЬКО СОТЕН 'elif - then' ##############

elif echo $newmsg | grep -i -s -q -E 'алло|алле|живой'
then
allo=("Я есть." "Да." "Я тут." "Я здесь.")
rotv=$allo[$RANDOM % ${#allo[@]} ]} # рандомный ответ

else rotv= ##### Молчу, т.к. не знаю, что сказать.
fi

echo "$(date '+%H:%M:%S') $rotv"
curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -F do=shout -F message="$rotv" -F s= $TARGTURL &> /dev/null # отправляем ответ

else : ##### Все молчат и я молчу.
fi

done

 , ,

Redf
()

RSS подписка на новые темы