Strona 1 z 1

Bash - Jak pobrać string ostatnich 5 znaków pliku tekstowego?

: 04 lis 2014, 14:57
autor: mes mariusz
Jak pobrać string ostatnich 5 znaków pliku tekstowego (np "44,50") a następnie obliczyć działanie 100 - string skonwertowany do liczby?

Re: Bash - Jak pobrać string ostatnich 5 znaków pliku tekstowego?

: 04 lis 2014, 18:32
autor: wytrzeszcz
nie mam teraz linuxa ale chyba

Kod: Zaznacz cały

echo "100 - `cat plik | tail -c5 | sed 's/,/./g' `" | bc 

Kod: Zaznacz cały

cat plik | tail -c5
 
robi robotę
pomoże Ci

Kod: Zaznacz cały

man tail
man sed
man bc
man awk
man grep
grep z opcjami -oE też cuda robi ... trochę mało wiem o pliku ale pokazałem jak znaleźć 5 ostatnich znaków
tak wiem bc ssie bo bash sam liczy ale te nawiasy to jakaś masakra

Re: Bash - Jak pobrać string ostatnich 5 znaków pliku tekstowego?

: 04 lis 2014, 19:00
autor: mes mariusz
Zaraz spróbuję tak jak powyżej.
Póki co próbowałem w ten sposób:

/home/mariusz/scripts/cpu.sh

Kod: Zaznacz cały

#!/bin/bash

LICZBA=`tail -c 6 /home/mariusz/cpu.log`
echo $LICZBA
WYNIK=`echo "100-$LICZBA" | bc`
echo $WYNIK
/home/mariusz/cpu.log

Kod: Zaznacz cały

Linux 3.13.0-24-generic (net)   04.11.2014      _i686_  (1 CPU)

18:51:50        CPU     %user     %nice   %system   %iowait    %steal     %idle
18:51:52        all      0,00      0,00      1,52      0,00      0,00     98,48
18:51:54        all      1,01      0,00      1,51      0,00      0,00     97,49
18:51:56        all      0,51      0,00      0,51      2,54      0,00     96,45
18:51:58        all      0,50      0,00      1,01      0,00      0,00     98,49
18:52:00        all      0,00      0,00      1,02      0,00      0,00     98,98
Średnia:       all      0,40      0,00      1,11      0,51      0,00     97,98

Kod: Zaznacz cały

root@net:/home/mariusz# /home/mariusz/scripts/cpu.sh
97,98
(standard_in) 1: syntax error
-- 04 lis 2014 19:14 --

To działa świetnie:

Kod: Zaznacz cały

echo "100 - `sar -u 2 5 | tail -c6 | sed 's/,/./g' `" | bc
Jeszcze tylko jeden szkopuł - parametr "6" w tail -c6

Chodzi o to, że Idle może przyjmować wartości 6, 5 i 4 cyfrowe równie dobrze, w zależności od obciążenia procesora.

Re: Bash - Jak pobrać string ostatnich 5 znaków pliku tekstowego?

: 04 lis 2014, 19:15
autor: wytrzeszcz
ja tam sedem , na . zamieniałem

Kod: Zaznacz cały

sed 's/,/./g'
a pod plik co dałeś to

Kod: Zaznacz cały

tail -n1 | awk '{print $8 }'