2013-03-02 7 views
8

मुझे अपने नेटवर्क के आईपी पते के साथ एक बड़ी कॉमा सेपरेटेड सीएसवी-सूची मिली है, जिसके खिलाफ मैं प्रश्न पूछना चाहता हूं। मेरी CSV इनपुट का उदाहरण:आयात-सीएसवी और Foreach

172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4 

आदि ....

जब मैं उत्पादन के लिए परीक्षण करने के लिए निम्न कोड चलाएँ:

$filepath = "c:\scripts\servers.csv" 
$servers = Import-CSV $filepath -delimiter "," 

Foreach ($server in $servers) { 
    write-host $server 

} 

मुझे कोई उत्पादन मिलता है, मुझे लगता है कि यह कारण है निर्दिष्ट कोई हेडर नहीं हैं। मैं स्पष्ट रूप से एक कामकाज कर सकता हूं और सीएसवी फ़ाइल खोल सकता हूं और सभी शीर्षकों में टाइप कर सकता हूं। क्या इसे हल करने के कोई अन्य तरीके हैं?

उत्तर

15

आप हेडर मक्खी पर (परिसीमक निर्दिष्ट करने की कोई जरूरत जब सीमांकक एक अल्पविराम है) बना सकते हैं:

Import-CSV $filepath -Header IP1,IP2,IP3,IP4 | Foreach-Object{ 
    Write-Host $_.IP1 
    Write-Host $_.IP2 
    ... 
} 
+0

मैं उम्मीद ओपी एक फ़ाइल जहां सभी आईपी के एक ही लाइन पर हैं (कम से कम है कि मैं कैसे की व्याख्या अपने आदि ...) – rene

+0

आपके उत्तर के लिए धन्यवाद, मैं वास्तव में इसकी प्रशंसा करता हूँ। अफसोस की बात है कि सीएसवी में लगभग 100 आईपी-एड्रेस सभी एक ही पंक्ति पर हैं, तो क्या मुझे 100 हेडर निर्दिष्ट करना होगा? – ScriptingBerry

+0

मैंने "आईपी" नामक 1 हेडर बनाया और इसके तहत सभी आईपी-एड्रेस लगाए। कामकाज, लेकिन यह अब काम करता है। – ScriptingBerry

1
$IP_Array = (Get-Content test2.csv)[0].split(",") 
foreach ($IP in $IP_Array){ 
    $IP 
} 

Get-सामग्री फ़ाइल का नाम प्रत्येक पंक्ति के लिए तार की एक सरणी देता है।

केवल पहली स्ट्रिंग पर, मैंने इसे "," के आधार पर विभाजित किया। इसे $ IP_Array में डंप कर रहा है।

$IP_Array = (Get-Content test2.csv)[0].split(",") 
foreach ($IP in $IP_Array){ 
    if ($IP -eq "2.2.2.2") { 
    Write-Host "Found $IP" 
    } 
} 
+4

हालांकि यह सरल सीएसवी फाइलों के लिए काम करेगा, यह विफल हो जाएगा जहां अल्पविराम फ़ील्ड मानों का हिस्सा हैं। – haliphax

+0

अल्पविराम सीमांकित फ़ाइल में फ़ील्ड नाम के हिस्से के रूप में अल्पविराम क्यों होगा? – PositriesElectron

0

समाधान डेलीमीटर बदलने के लिए है।

: - csv फ़ाइल के

सामग्री> ध्यान दें .. इसके अलावा अंतरिक्ष और, मूल्य में

मान 6 डच शब्द aap, noot, Mies, पीट, गिज्स, जनवरी

Col1;Col2;Col3 

a,ap;noo,t;mi es 

P,iet;G ,ijs;Ja ,n 



$csv = Import-Csv C:\TejaCopy.csv -Delimiter ';' 

जवाब कर रहे हैं

Write-Host $csv 
@{Col1=a,ap; Col2=noo,t; Col3=mi es} @{Col1=P,iet; Col2=G ,ijs; Col3=Ja ,n} 

सीएसवी फ़ाइल को पढ़ना संभव है और प्रत्येक कॉलम को अलग करने के लिए अन्य डेलीमीटर का उपयोग करना संभव है।

यह मेरी स्क्रिप्ट के लिए काम किया :-)