praegune kellaaeg 18.06.2025 15:53:54
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
sirius4k
HV veteran

liitunud: 25.09.2005
|
07.05.2015 17:25:25
PowerShell RegEx |
|
|
Tervist
Üritan siin regexiga, PowerShellis, stringi algusest ja lõpust eemaldada ebavajalikke sümboleid.
Seni on see õnnestunud nii:
$kollane = "||| mingi tekst ???"
$eest = $kollane -replace '|||', ''
$takka = $eest -replace '???', '' |
Kindlasti saab seda kuidagi ka ühe reaga teha
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
55 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
07.05.2015 22:54:41
Re: PowerShell RegEx |
|
|
sirius4k kirjutas: |
Tervist
Üritan siin regexiga, PowerShellis, stringi algusest ja lõpust eemaldada ebavajalikke sümboleid.
Seni on see õnnestunud nii:
$kollane = "||| mingi tekst ???"
$eest = $kollane -replace '|||', ''
$takka = $eest -replace '???', '' |
Kindlasti saab seda kuidagi ka ühe reaga teha  |
Trim peaks sellejaoks sobilik olema:
$kollane = "||| mingi tekst ???"
$valjund = $kollane.Trim("|||","???"," ") |
http://blogs.technet.com/b/heyscriptingguy/archive/2014/07/18/trim-your-strings-with-powershell.aspx
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
sirius4k
HV veteran

liitunud: 25.09.2005
|
08.05.2015 08:53:21
|
|
|
Tänud.
Kuid näen, et oleks pidanud täpsemalt kirja panema asja.
Nimelt ei ole lõigatav objekt string, vaid ongi PS objekt. Ja sellel pole trim meetodit.
Panen kokku klopsitud asja ka siia
#Get password
$password = Get-Content "C:\Users\kasutaja\Documents\password.txt" | ConvertTo-SecureString
#Set credentials
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ftpkasutaja, $password
#Create new FTP session
Set-FTPConnection -Credentials $creds -Server ftp.server.ee -UsePassive -Session xSessioon | Out-Null
#Get last item in session
$FTPLastItem = Get-FTPChildItem -Session xSessioon / | Select-Object Name -Last 1
#Download last item in session, overwrite existing
Get-FTPChildItem -Session xSessioon -Path / | Select-Object -Last 1 | Get-FTPItem -Session xSessioon -LocalPath 'C:\TEMP\' -Overwrite
#Remove crap from the front
$CutFront = $FTPLastItem -replace '@{Name=', ''
#Remove crap at the end
$CutBack = $CutFront -replace "}$", ""
#Unzip last update to parandused folder
Get-FileFromZip -ZipFile "C:\TEMP\$CutBack" -Destination "C:\TEMP\" |
Ma saan objekti sellisena: @{Name=zipfile_kuupäev.zip}
Ma tahan, et jääks zipfile_kuupäev.zip, et saaks automaagiliselt järgmise käsuga selle kohe lahti pakkida.
viimati muutis sirius4k 08.05.2015 11:09:00, muudetud 2 korda |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
55 |
|
tagasi üles |
|
 |
warwas
HV Guru

liitunud: 06.07.2003
|
08.05.2015 09:35:47
|
|
|
sirius4k kirjutas: |
Nimelt ei ole lõigatav objekt string, vaid ongi PS objekt. Ja sellel pole trim meetodit. |
Stringiks cast'ida ei õnnestu?
|
|
Kommentaarid: 247 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
3 :: |
224 |
|
tagasi üles |
|
 |
sirius4k
HV veteran

liitunud: 25.09.2005
|
08.05.2015 11:01:20
|
|
|
warwas kirjutas: |
sirius4k kirjutas: |
Nimelt ei ole lõigatav objekt string, vaid ongi PS objekt. Ja sellel pole trim meetodit. |
Stringiks cast'ida ei õnnestu? |
Tänud, selle peale enne ei tulnudki.
Lisasin nüüd [string] objekti ette, mida kätte üritan saada
[String]$FTPLastItem = Get-FTPChildItem -Session xSessioon / | Select-Object Name -Last 1 |
Nüüd aga kui ma üritan teha nii, nagu Renka soovitas:
$FTPLastItem.Trim("@{Name=", "}", " ") |
Siis ma saan veateateks
Cannot convert argument "trimChars", with value: "@{Name=", for "Trim" to type "System.Char": "Cannot convert value "@{Name=" to type "System.Char". Error: "String must be exactly one character long."" |
Nõuab et sisestaksin ainult ühe tähe
Samas, kui Trim'is kasutan ainult ühte sisendit, siis töötab sellega, mida ette annan. Praegu tundub, et igat pidi tuleb rohkem, kui üks rida.
Lahendus
Tänud teile mõlemile õigele teele suunamisest
Mul tuli meelde, et PSis töötab chainimine
Tuli objekt stringiks teha
Ja trim-iga eemaldasin mittevajalikud asjad algusest ja lõpust chainides trimstart-i ja trimend-i
$output = $FTPLastItem.TrimStart("@{Name=").TrimEnd("}") |
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
55 |
|
tagasi üles |
|
 |
kr15tj4n
Kaevur

liitunud: 29.01.2011
|
08.08.2015 16:52:24
|
|
|
Alati pole vast tark regular expressione kasutada, vaid lihtsalt tavalist stringi funktsioone.
_________________ Kristjan Robam |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|