[英]Replacing multiple row patterns in CSV with Regex and PowerShell?
我有一個Excel文件,其中包含數千行數據,這些數據是我使用各種PowerShell腳本從SharePoint服務器檢索到的。
行的內容結構非常相似:
General/Categoryname /ADMIN_XXXX_YEAR(random stuff here)/more_random_stuff_here.filetype
問題是我需要過濾掉除ADMIN_XXXX_YEAR(randomstuffhere)
部分之外的所有內容。
就正則表達式而言,我將關注以下內容:
http://www.regexper.com/#General \\%2F%28 \\ w%2B%29 \\%2F%28 \\ w%2B%29_%28 \\ d%2B%29_%28 \\ d%2B%29 \\%28%28%* 29 \\ 29%
(雖然很公平(\\w+)\\/(\\w+)_(\\d+)_(\\d+)\\((.*)\\)
本身就足夠了)。
是的,我知道我的Regex-Fu並非完全一流,但是該表達通常可以滿足我的需要,因為它可以找到我需要的東西。 這里的問題主要是,根據我對StackExchange的了解和搜索,如果沒有VBA腳本,就無法將其應用於Excel。 雖然我不清楚如何執行這樣的搜索,但仍存在內部搜索和查找。 也許我不知道在PowerShell中有這樣做的方法嗎?
如果有人擁有可以幫助我的有益信息,我將不勝感激。
可以在Excel中使用以下公式來完成:
=MID(A1,FIND("ADMIN",A1),FIND("/",A1,FIND("ADMIN",A1))-FIND("ADMIN",A1))
假設應用於單元格A1。
或使用帶有/
作為分隔符的“文本到列”,並刪除多余的部分。
只是為了闡明import-csv
建議,您可以嘗試類似
[System.Collections.ArrayList]$output = @()
$csv = import-csv yourCSVfile.csv
foreach ($row in $csv) {
$string = select columnName
$parts = $string -split "/"
$output.add($parts[2])
}
$output
...假設您的字符串,
常規/類別名稱/ ADMIN_XXXX_YEAR(此處為隨機內容)/more_random_stuff_here.filetype
是csv中的一列,而您的部分始終遵循第二個斜線。 如果您使用斜線分隔csv中的列,則可以執行$output.add($string)
並跳過$parts
內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.