-
1. Data: 2011-05-04 07:40:34
Temat: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
Witam
W pliku tekstowym mam coś takiego :
Accuracy:
CurrentReading: 19
CurrentState: Normal
Description: Temperature Sensor 3 detects for Memory board. Temperature
reported by the sensor is within normal operating range.
DeviceID: Temperature Sensor 3
Accuracy:
CurrentReading: 40
CurrentState: Normal
Description: Temperature Sensor 7 detects for Memory board. Temperature
reported by the sensor is within normal operating range.
DeviceID: Temperature Sensor 7
Accuracy:
CurrentReading: 18
CurrentState: Normal
Description: Temperature Sensor 17 detects for Ambient / External / Room.
Temperature reported by the sensor is within normal operating range.
DeviceID: Temperature Sensor 17
chciałbym wyciągnąć z linii CurrentReading cyfrę 40 porównać z np 45 i
jeżeli zostanie przekroczona to wysłać maila.
Nie mogę sobie poradzić z wyciągnięciem cyfry 40 z tego pliku tekstowego w
powershellu jak tu uczynnić proszę o nakierowanie ? :-)
No chyba zę sie nie da tego zrobić w powershellu :-)
Pozdrawiam
Slawek
-
2. Data: 2011-05-04 09:10:18
Temat: Re: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
lub wydobycie cyfry z takiego formatu z 2 linii :
CurrentReading: 21
CurrentReading: 40
CurrentReading: 19
Pozdrawiam
-
3. Data: 2011-05-04 09:14:59
Temat: Re: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
Użytkownik "Slawek" napisał w wiadomości grup
dyskusyjnych:ipr55v$dl5$...@n...onet.pl...
lub wydobycie cyfry z takiego formatu z 2 linii :
CurrentReading: 21
CurrentReading: 40
CurrentReading: 19
Pozdrawiam
(Get-Content my.txt | %{ $_.Split('')[1]; })
coś takiego daje:
21
40
19
jak teraz wydobyć tą 40-stkę ?
-
4. Data: 2011-05-04 09:15:00
Temat: Re: Powershell plik tekstowy
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2011-05-04, Slawek <b...@o...pl> wrote:
>
> lub wydobycie cyfry z takiego formatu z 2 linii :
Odróżniasz słowo od litery? To dlaczego nie odróżniasz liczby od cyfry?
> CurrentReading: 21
> CurrentReading: 40
> CurrentReading: 19
W awk to by było coś takiego:
awk -F: '$1 == "CurrentReading" { print $0 }'
W PowerShellu to pewnie coś podobnego.
--
Secunia non olet.
Stanislaw Klekot
-
5. Data: 2011-05-04 09:18:31
Temat: Re: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
Użytkownik "Stachu 'Dozzie' K." napisał w wiadomości grup
dyskusyjnych:ipr5ek$ia1$...@s...org...
On 2011-05-04, Slawek <> wrote:
>
> lub wydobycie cyfry z takiego formatu z 2 linii :
Odróżniasz słowo od litery? To dlaczego nie odróżniasz liczby od cyfry?
> CurrentReading: 21
> CurrentReading: 40
> CurrentReading: 19
W awk to by było coś takiego:
awk -F: '$1 == "CurrentReading" { print $0 }'
W PowerShellu to pewnie coś podobnego.
--
Secunia non olet.
Stanislaw Klekot
:-) gdyby tam był tylko awk to życie byłoby o wiele prostsze , ale niestety
brak go na win2008 64bit :-)
-
6. Data: 2011-05-04 17:12:15
Temat: Re: Powershell plik tekstowy
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Slawek <b...@o...pl> napisał(a):
> chciałbym wyciągnąć z linii CurrentReading cyfrę 40 porównać z np 45 i
> jeżeli zostanie przekroczona to wysłać maila.
> Nie mogę sobie poradzić z wyciągnięciem cyfry 40 z tego pliku tekstowego
> w powershellu jak tu uczynnić proszę o nakierowanie ? :-)
> No chyba zę sie nie da tego zrobić w powershellu :-)
gc test.txt | foreach {
if ($_ -match "CurrentReading: (\d.*)") {
$v = $matches[1]
if ($v -gt 45) { "przekroczono: " + $v}
}
}
To przykład, pewnie da się prościej.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 8 hours, 58 minutes and 4 seconds
-
7. Data: 2011-05-04 19:20:29
Temat: Re: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
Użytkownik "Grzegorz Niemirowski" napisał w wiadomości grup
dyskusyjnych:ips1ej$6j1$...@o...icpnet.pl...
Slawek <b...@o...pl> napisał(a):
> chciałbym wyciągnąć z linii CurrentReading cyfrę 40 porównać z np 45 i
> jeżeli zostanie przekroczona to wysłać maila.
> Nie mogę sobie poradzić z wyciągnięciem cyfry 40 z tego pliku tekstowego
> w powershellu jak tu uczynnić proszę o nakierowanie ? :-)
> No chyba zę sie nie da tego zrobić w powershellu :-)
gc test.txt | foreach {
if ($_ -match "CurrentReading: (\d.*)") {
$v = $matches[1]
if ($v -gt 45) { "przekroczono: " + $v}
}
}
To przykład, pewnie da się prościej.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 8 hours, 58 minutes and 4 seconds
Hmmmm nie zupełnie o to mi chodziło gdyż ten skrypt listuje wszystkie linie
które przekroczyły 45 a może sie zdarzyć ze w pliku będzie ich więcej (są to
sensory temperatury i wartość po CurrentReading się zmienia) a w pliku
wejściowym są az 32 linie z rożnymi wartościami i wtedy dostane coś takiego
przekroczono: 46
przekroczono: 49
a mi chodzi aby z linii 2 usunąć CurrentReading: lub wyodrębnić tylko
wartość 40 a dalej to juz to sobie porównam i wyślę maila.
Pozdrawiam
-
8. Data: 2011-05-04 19:42:15
Temat: Re: Powershell plik tekstowy
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Slawek <b...@o...pl> napisał(a):
> Hmmmm nie zupełnie o to mi chodziło gdyż ten skrypt listuje wszystkie
> linie które przekroczyły 45 a może sie zdarzyć ze w pliku będzie ich
> więcej (są to sensory temperatury i wartość po CurrentReading się
> zmienia) a w pliku wejściowym są az 32 linie z rożnymi wartościami i
> wtedy dostane coś takiego
> przekroczono: 46
> przekroczono: 49
Napisałeś, że masz problem z wyciąganiem wartości więc pokazałem Ci jak użyć
regexpy w PowerShell
Podobny przykład:
$przekroczono = $false;
gc test.txt | foreach { if ($_ -match "CurrentReading: (\d.*)") { if
($matches[1] -gt 45) { $przekroczono = $true;} } }
$przekroczono
> a mi chodzi aby z linii 2 usunąć CurrentReading: lub wyodrębnić tylko
> wartość 40 a dalej to juz to sobie porównam i wyślę maila.
> Pozdrawiam
No to jaki masz problem? Masz pokazane jak wyciągać wartość.
PS. Odpisuj jakoś normalnie bo na razie to dopisujesz mi się do sygnaturki.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 11 hours, 23 minutes and 38 seconds
-
9. Data: 2011-05-04 20:19:44
Temat: Re: Powershell plik tekstowy
Od: "Slawek" <b...@o...pl>
Chcę z linii drugiej wyciągnąć liczbę 40 bez żadnych pętli
CurrentReading: 21
CurrentReading: 40
CurrentReading: 19
może trochę zagmatwałem to wszystko :-)
Użytkownik "Grzegorz Niemirowski" napisał w wiadomości grup
dyskusyjnych:ipsa5h$f6o$...@o...icpnet.pl...
Podobny przykład:
$przekroczono = $false;
gc test.txt | foreach { if ($_ -match "CurrentReading: (\d.*)") { if
($matches[1] -gt 45) { $przekroczono = $true;} } }
$przekroczono
> a mi chodzi aby z linii 2 usunąć CurrentReading: lub wyodrębnić tylko
> wartość 40 a dalej to juz to sobie porównam i wyślę maila.
> Pozdrawiam
No to jaki masz problem? Masz pokazane jak wyciągać wartość.
PS. Odpisuj jakoś normalnie bo na razie to dopisujesz mi się do sygnaturki.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 11 hours, 23 minutes and 38 seconds
-
10. Data: 2011-05-04 20:24:51
Temat: Re: Powershell plik tekstowy
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Slawek <b...@o...pl> napisał(a):
> Chcę z linii drugiej wyciągnąć liczbę 40 bez żadnych pętli
> CurrentReading: 21
> CurrentReading: 40
> CurrentReading: 19
> może trochę zagmatwałem to wszystko :-)
1. W czym Ci pętla przeszkadza? Chyba nie ma znaczenia jakiej konstrukcji
języka użyjesz :)
2. Co rozumiesz przez wyciągnięcie liczby? Tak jak pokazuje przykład, liczba
jest w tablicy $matches pod indeksem 1.
Generalnie brakuje mi dokładnego algorytmu albo nie udało mi się go
zrozumieć. Chcesz listę liczb większych od zadanej? Chcesz największą?
Chcesz pierwszą z brzegu większą od zadanej?
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 2 days, 12 hours, 8 minutes and 49 seconds