2015-03-06 22 views
12

Ho un file csv e voglio emettere un nuovo file csv, che contiene solo le prime 10 righe di quello originale. Finora ho trovato solo il codice per eliminare singole righe o righe che contengono una determinata parola. È probabilmente un one-liner di 15 caratteri, ma non sono sicuro di come affrontarlo, ogni aiuto sarebbe molto apprezzato. Non mi aspetto che tu scriva codice, solo il comando giusto mi aiuterà.Estrai solo le prime 10 righe di un file csv in PowerShell

risposta

6
Get-Content in.csv -Head 10 > out.csv 
23
Get-Content "C:\start.csv" | select -First 10 | Out-File "C:\stop.csv" 

Che ha fatto

+1

Questa è anche una risposta, ma a seconda di quanto è grande il file è la risposta utilizzando '-Head 10' sarebbe più efficiente in quanto non è necessario leggere l'intero file. – Matt

+1

Non so quale versione stai usando, ma a partire dalla versione 2.0, ricevo un messaggio che dice _Get-Content: non è possibile trovare un parametro che corrisponda al nome del parametro 'Head' ._ – GlennFromIowa

+0

Per powershell 2 vai con la risposta di emekm e usa Parametro "-TotalCount" sul cmdlet "Get-Content". –

5

Usando il parametro -TotalCount è raccomandato. Soprattutto se hai un grande file CSV. In questo modo, si leggeranno solo le prime 10 righe del file CSV, invece di leggere tutte le righe, selezionando le prime 10 righe ed estraendole.

Get-Content C:\Temp\Test.csv -TotalCount 3 | Out-File C:\Temp\Test10lines.csv 

Questo funziona in Powershell 2 in poi.

+0

Quale sarebbe l'equivalente Linux? – Marine1

0

è anche possibile utilizzare

(Get-Content yourfile.csv)[0 .. 11]>outputfile.csv 

essere sicuri di includere la riga di intestazione o si potrebbe incorrere in problemi. Puoi anche modificare i numeri per ottenere le righe che desideri. Le prime e le prime bandiere non funzionavano per me.

Problemi correlati