У меня есть 7000+ текстовых файлов, которые мне нужно проверить на наличие строки / строки (NAME = ??????) и поиск в файле csv, чтобы увидеть, есть ли совпадение.Если в файле csv есть совпадение, я хочу добавить содержимое из третьего столбца в csv в исходный соответствующий текстовый файл в виде новой строки.
Пример нескольких строк из исходного текстафайл:
DATE=23/10/2018 09:10
NAME=CAP9000323 <b><i>- String / line to find in CSV file</i></b>
USER=
SERIAL=
BIOS="Mar 20 2009 12:00AM" "LENOVO" "LENOVO - 12e"
HWPLATFORM=LENOVO 6258A92
MANUFACTURER=LENOVO
CPU=CPU0 2200 Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz Model 15, Stepping 13
MEMORY=3652724
NETWORK="7_e1kexpress" "10.248.93.8
Пример файла CSV:
Column1,Column2.4,Location
NAME=0LJA4Y,10.248.68.50,LOCATION=LEVEL 06
NAME=BTCSHFQLA01,10.91.140.10,
NAME=CAO9000961,10.248.146.172,LOCATION=WIRELESS
NAME=CAP6040638,10.68.192.151,LOCATION=GRN HO-
NAME=CAP9000035,10.248.146.171,LOCATION=WIRELESS
NAME=CAP9000066,10.161.240.26,LOCATION=GDNS-
NAME=CAP9000077,,
NAME=CAP9000323,10.248.93.8,LOCATION=FIRST START- <b><i>- Match would find this line and copy column 3 content 'LOCATION=FIRST START-' back to original text file that it matched</i></b>
NAME=CAP9000352,,
NAME=CAP9001820,10.248.147.0,LOCATION=WIRELESS
Ожидаемый результат:
DATE=23/10/2018 09:10
NAME=CAP9000323 <b><i>- String / line to find in CSV file</i></b>
USER=
SERIAL=
BIOS="Mar 20 2009 12:00AM" "LENOVO" "LENOVO - 12e"
HWPLATFORM=LENOVO 6258A92
MANUFACTURER=LENOVO
CPU=CPU0 2200 Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz Model 15, Stepping 13
MEMORY=3652724
NETWORK="7_e1kexpress" "10.248.93.8
LOCATION=FIRST START- <b><i>- The content from the CSV file, column 3 added to the original text file</i></b>
Приложение:
Извинения, я копался (в течение нескольких дней) и пробовал различные попытки кода.
Это, казалось, было самым близким к тому, что я ищу - Соответствие строк в текстовом файле на основедля значений в CSV
Моя последняя попытка:
$CSVFIL = Import-Csv -Path C:\Collector\MissingLookup.csv
$TEXTFIL = Get-Content -Path "C:\Collector\Jobs\*.txt" | Select-String -Pattern 'NAME='
$matches = @()
foreach ($line in $TEXTFIL) {
if ($CSVFIL -contains $line.COL1) {
$matches += $line.COL3
}
}
if ($matches.Count -gt 0)
{
$matches | Foreach-Object {
Add-Content $TEXTFIL
}
}
Результаты, которые я получаю, это либо ничего не делает, либо ничего не записывается обратно в исходный текстовый файл.