簡體   English   中英

如果行包含搜索模式,則使用Powershell從文件中提取文本(文件名)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM