gpt4 book ai didi

正则表达式和 Powershell : Use Regex to Create Files based on name found in CSV

转载 作者:行者123 更新时间:2023-12-01 00:49:08 25 4
gpt4 key购买 nike

我正在尝试导入和处理 CSV。从第三列的位置 2-4,我想将该行写入具有该标识符的文件。

例如,从“results.csv”的第 1 行开始,我试图将匹配行写入名为“274.txt”的文件:

10.121.8.84,TRUE,N274SECX9010C5D,3/20/2015 15:48

I am somewhat certain my regex maybe wrong. It looks fine and is able to go through sample text in Expresso. However, when added to script, I do not see any results.

Results.csv:

10.121.88.84,TRUE,N274SECX9610C5D,3/20/2015 15:48
10.77.89.109,TRUE,L186OFFX2K6KMX1,3/24/2015 9:49
10.144.18.135,TRUE,N488FOOD2NK6MB1,3/25/2015 7:20
10.181.92.175,FALSE,,
10.147.86.54,FALSE,,

Powershell 代码:
$path = Split-Path -parent $MyInvocation.MyCommand.Definition
$Results_File = $path + "\results.csv"

Import-Csv $Results_File | ForEach {
If ($_ -Match '^.*,\w(?<filename>\d{3}).*') {
$_ | Out-File -Append "$($Matches.Filename).csv"
}
}

最佳答案

您应该更换您的 Import-Csv来自 Get-Content

$path = Split-Path -parent $MyInvocation.MyCommand.Definition
$Results_File = $path + "\results.csv"

get-content $Results_File | ForEach {
If ($_ -Match '^.*,\w(?<filename>\d{3}).*') {
$_ | Out-File -Append "$($Matches.Filename).csv"
}
}

因为 import-csv的结果给出了你不想在正则表达式中解析的对象列表。
您还可以尝试以下操作:
Import-Csv $Results_File -Header 'C1','C2','C3','C4'
C1 C2 C3 C4
-- -- -- --
10.121.88.84 TRUE N274SECX9610C5D 3/20/2015 15:48
10.77.89.109 TRUE L186OFFX2K6KMX1 3/24/2015 9:49
10.144.18.135 TRUE N488FOOD2NK6MB1 3/25/2015 7:20
10.181.92.175 FALSE
10.147.86.54 FALSE

然后使用 $_.C3使用不同的 RegEx。

关于正则表达式和 Powershell : Use Regex to Create Files based on name found in CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com