Импорт-CSV Select -Skip
У меня есть несколько файлов CSV, которые должны быть объединены в один. В каждом файле CSV есть заголовок, а во втором ряду текст, который мне не нужен.
Я заметил | Select -Skip 1
Заявление для заголовков. Теперь мне было интересно, как я могу пропустить 3-й ряд?
Я попробовал это, но это дает мне пустой файл
Get-ChildItem -Path $CSVFolder -Recurse -Filter "*.csv" | %{
Import-Csv $_.FullName -Header header1, header3, header4 |
Select -Skip 1 | Select -Skip 2
} | Export-Csv "C:\Export\result.csv" -NoTypeInformation
2 ответа
Попробуй это
$i=0;
import-csv "C:\temp2\missing.csv" | %{$i++; if ($i -ne 3) {$_}} | export-csv "C:\temp2\result.csv" -NoTypeInformation
Если все, что вы делаете, - пропускает первые строки во всех пользовательских случаях, просто используйте -skip 3.
Get-Content -Path 'D:\Temp\UserRecord.csv'
# Results
<#
Name Codes
------- ---------
John AJFKC,EFUY
Ben EFOID, EIUF
Alex OIPORE, OUOIJE
#>
# Return all text after row the Header and row 3
(Get-Content -Path 'D:\Temp\UserRecord.csv') |
Select -Skip 3
# Results
<#
Ben EFOID, EIUF
Alex OIPORE, OUOIJE
#>
Смотрите также:
Select-Object
не позволяет пропускать произвольные строки между другими строками. Если вы хотите удалить определенную строку из файла ввода текста, вы можете сделать это с помощью счетчика, например, так:
$cnt = 0
Import-Csv 'C:\path\to\input.csv' |
Where-Object { ($cnt++) -ne 3 } |
Export-Csv 'C:\path\to\output.csv' -NoType
Если записи во входном CSV-файле не имеют вложенных разрывов строк, вы также можете использовать Get-Content
/Set-Content
что, вероятно, немного быстрее, чем Import-Csv
/Export-Csv
(из-за меньшего разбора накладных расходов). Увеличьте номер строки, которую вы хотите пропустить, на единицу, чтобы учесть строку заголовка.
$cnt = 0
Get-Content 'C:\path\to\input.csv' |
Where-Object { ($cnt++) -ne 4 } |
Set-Content 'C:\path\to\output.csv'