LINUX.ORG.RU

Сообщения ginkok

 

Regex, grep поиск совпадений

Добрый день, я слаб в регулярных выражениях подскажите как мне отредактировать регулярное выражения «\d+\s+[^\s]+$» так чтобы в результате оставались значения с запятой, при том что если значений без запятой, то он выводил бы целое число.

Обрабатываемый текст:

1+0 записей получено
1+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 11,6752 c, 92,0 MB/c
1+0 записей получено
1+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 11,6427 c, 92,2 MB/c
1+0 записей получено
1+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 41,7573 c, 257 MB/c

Текущий результат:

0 MB/c
2 MB/c
257 MB/c

Желаемый результат:

92,0 MB/c
92,2 MB/c
257 MB/c

 , , ,

ginkok
()

Bash не сбрасывается значение перменной

Добрый день, не могу разобраться почему при запуске цикла с последующим запуском игнорируется запуск переменной $dd_ssd и скрипт просто считывает значение предыдущей переменной?

Пример: Запускаю скрипт, в условие проверяется скорость диска. Далее когда новый цикл запускается в условие предыдущее значение по прежнему почему-то и команда что в переменной $dd_ssd не выполняется

#!/bin/bash
service supervisord stop
service mysql stop
date_ssd=$(date '+%d-%m-%Y_%H-%M-%S')
summa=0
dd_ssd=`sync; dd if=/dev/zero of=/tmp/tmp bs=512k count=20k |& awk '/скопировано/ {print $8 " "  $9}'`
for ((;;))
do
sleep 10
summa=$(($summa+10))
echo "Записано на диск $summa ГБ" >> result.log
#write_ssd=$($dd_ssd)
#$write_ssd
if [[ $dd_ssd = *"MB/c"* ]]; then
 echo "$dd_ssd" > test_ssd.log
 echo "===============START TEST $date_ssd=================" >> result.log
 echo "Записываем 10 гигабайт!. WRITE..."
 echo "Скорость в мегабайтах" >> result.log
 awk_ssd=`awk '{print $1}' test_ssd.log`
 echo "$awk_ssd"
 if [[ $awk_ssd -ge "70" ]]; then
   echo "Скорость выше 70 мб/сек = $awk_ssd" >> result.log
   echo "Состояние диска в % $(awk "BEGIN { print 100 - ($(($(smartctl -x /dev/sda | awk '/241 Total_LBAs_Written/ {print $8}') * 32 / 1024 / 1024 ))*0.96)}")" >> result.log
   else echo "Скорость ниже 70 мб/сек ERROR!!!" >> result.log
   fi
else
 echo "Скорость диска больше 1 Гбит/сек!" >> result.log
 echo "Состояние диска в % $(awk "BEGIN { print 100 - ($(($(smartctl -x /dev/sda | awk '/241 Total_LBAs_Written/ {print $8}') * 32 / 1024 / 1024 ))*0.96)}")" >> result.log
fi
echo "=============END TEST $date_ssd========" >> result.log
done
echo "FINISH. Скорость SSD менее 70 мбит/сек!" >> result.log
exit 0

 , ,

ginkok
()

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