Giriş
Dosyanın okunabilirliğini kontrol etmek için önce Test-Path kullanılabilir.
Dosyayı bir Object[] içine okur. Ayraç olarak newline kullanılır. Sonucun string dizisi olduğunu görmek için şöyle yaparız
$object = Get-Content data.txt
$object.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Şöyle yaparız. Her satırı okur. INSERT INTO ile başlıyorsa ilk ' (single quote) karakterini bulur. ' karakterini escape etmek için 4 defa '''' şeklinde kullanmak gerek.
foreach($line in Get-Content data.sql) {if($line.StartsWith('INSERT INTO')) {$startIndex = $line.IndexOf(''''');if ($startIndex -ne -1) {$endIndex = $line.IndexOf('''',$startIndex + 1)$length = $endIndex - $startIndex + 1Write-Output $line.SubString($startIndex,$length);}}}
Örnek
Bir başka bilgisayardaki dosyayı okumak için şöyle yaparız
Get-Content -Path "\\xx.xxx.xx.xxx\c$\App_configuration.txt"
-Raw seçeneği
Dosyayı tek bir string değişkeni içine okur
Örnek
Şöyle yaparız
$text = Get-Content .\file.txt -Raw
İkinci dosyadaki bir alanı birinci dosyada içeren satırları bulmak için şöyle yaparız
$filename="insert.txt"Remove-Item $filename$file1 = Get-Content -RAW .\file1.txt$file1lines = $file1.Split(';')$file2 = Get-Content -RAW .\file2.txt$file2lines = $file2.Split(';')foreach($file2line in file2lines) {$file2line = $file2line - replace "'n'r",""$file2line = $file2line.Trim()if($file2line.StartsWith('INSERT INTO')) {$startIndex = $file2line.IndexOf(''''');if ($startIndex -ne -1) {$endIndex = $file2line.IndexOf('''',$startIndex + 1)$length = $endIndex - $startIndex + 1$id = $file2line.SubString($startIndex,$length);$file1lines |foreach {if ($_.Contains($id) {$_ | Out-File -Append -FilePath $filename}}}}}
Hiç yorum yok:
Yorum Gönder