Přejít k obsahu webu
27.1.2022 / kaldy123

Editace textových souborů v Powershell

Cílem třohoto článku je uvést několik příkladů, jak pomocí powershell skriptu provést editace textových souborů na základě jistých pravidel. Poskytuji spíše kuchařku, než podrobný výklad.

Předpoklad: textový soubor:

Potřebujeme upravit chybný čas, ten správný lze vyčíst z názvů obrázků, které jsou ve tvaru ‚IMG_20210930_151417‘, ve kterém je uveden čas pořízení s přesností na sekundy (30.září 2021, 15 hodin, 14 minut 17 sekund). Pro naše účely bude stačit opravit čas s přesností na minuty.

Pro načtení textového souboru použijeme commandlet Get-Content, jehož výsledkem je objekt typu seznam, jehož prvky tvoří řádky textového souboru. V následujícím příkladu se zároveň filtrují prázdné řádky:

Teď, když už máme jednotlové řádky ve formě promměnné, můžeme zahájit úpravy řádků pomocí standardních metod nad textovými proměnnými:

$soubor=Get-Content c:\inetpub\wwwroot\drahy.unas.cz\211112UNas\update.sql
foreach ($line in $soubor) {if ($line -gt 0) {($line.Substring(0,$line.IndexOf("cas=")+10)) + ($line.Substring($line.IndexOf("IMG_2021")+8,2)) + "-" + ($line.Substring($line.IndexOf("IMG_2021")+10,2))}}

aneb zkráceně:

$soubor=Get-Content c:\inetpub\wwwroot\drahy.unas.cz\211112UNas\update.sql
$soubor|foreach  {if ($_ -gt 0) {($_.Substring(0,$_.IndexOf("cas=")+10)) + ($_.Substring($_.IndexOf("IMG_2021")+8,2)) + "-" + ($_.Substring($_.IndexOf("IMG_2021")+10,2))}}

což dá výsledek:

Takže teď už je nasnadě celý skript:

$soubor=Get-Content c:\inetpub\wwwroot\drahy.unas.cz\211112UNas\update.sql
$soubor|foreach  {if ($_ -gt 0) {($_.Substring(0,$_.IndexOf("cas=")+10)) + ($_.Substring($_.IndexOf("IMG_2021")+8,2)) + "-" + ($_.Substring($_.IndexOf("IMG_2021")+10,2)) + " " `
+ ($_.Substring($_.IndexOf("IMG_2021")+13,2)) + ":" + ($_.Substring($_.IndexOf("IMG_2021")+15,2)) + ($_.substring($_.indexOf("cas=")+21,$_.length-$_.indexof("cas=")-21)) `
 }}|Out-File -FilePath c:\x\update.sql -Append

Na závěr skriptu je celý výsledek „pajpnut“ (předán) na výstup do souboru.

No a to je výsledek:

Resumé:
V Powershell načteme textový soubor, přičemž jednotlivé řádky představují prvky jednorozměrného pole (seznamu). Tyto prvky pak lze upravovat standardními metodami pro textové proměnné. Zde v příkladu jsou uvedeny pouze metody Substr a IndexOf, samozřejmě lze použít i další.

Advertisement

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s

%d blogerům se to líbí: