[英]Extracting line of text from csv file with PowerShell by matching a pattern at the beginning of the line
[英]Extracting text (filename) out of a file with Powershell if line contains search pattern
我有一個問題...我有一個文件,內容看起來像
IMPORT ("$(#T_Company-BAG)\KSAKTE13","06141030.eou")
IMPORT ("$(#T_Company-Gesmbh)\KSAKTE13","06141032.eou")
IMPORT ("$(#T_Company-ITALIA)\KSAKTE13","06141038.eou")
IMPORT ("$(#T_Company-ITALIA)\KSAKTE13","06141045.eou")
IMPORT ("$(#T_Company-ITALIA)\RWRECH13","06141512.eou")
我要做的是提取最后一個引號內的文件名( *.eou
),僅提取包含字符串T_Company-ITALIA
的文件名...
第一部分,提取包含搜索模式的所有行並不那么困難...
gc -Path C:\Scripts\Easyarchiv\level2.ebt | Select-String -Pattern T_Company-ITALIA
但是我不知道如何從已選擇的行中僅獲取文件名( *.eou
)...
現在,我正在尋找可以提取此內容的正則表達式
這是一個不使用Select-String
的選項:
Get-Content file.txt |
where {$_ -match 'T_Company-ITALIA'} |
foreach { $_ -replace '^.+,"(.+)"\).*$','$1'}
試試這個而不是Select-String
:
... | ? { $_ -match 'T_Company-ITALIA.*?,"(.*?)"' } | % { $matches[1] }
如果您想遠離正則表達式(可能難以閱讀,調試和理解),則可以這樣做:
gc file.txt |
foreach {
$splitArray = $_ -split '"'; # split at the quotation marks
if ($splitArray[1] -match "T_Company-ITALIA")
{$splitArray[3]}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.