2015-06-11 14 views
0

我有一個file.data其內容如下:Windows命令行 - 過濾線與非零值

140919071513,10,0,1,0,0 
140919071513,11,0,1,0,0 
140919071513,12,67,1,0,0 
140919071513,13,89,1,0,0 
140919071513,14,0,1,0,0 
140919071513,15,32,1,0,0 
140919071513,16,0,1,0,0 
140919071513,17,0,1,0,0 
140919071513,18,78,1,0,0 
140919071513,19,0,1,0,0 
140919071513,20,34,1,0,0 

我需要在Windows-DOS運行單行命令得到以下輸出:

(在第3列的非零值)

140919071513,12,67,1,0,0 
140919071513,13,89,1,0,0 
140919071513,15,32,1,0,0 
140919071513,18,78,1,0,0 
140919071513,20,34,1,0,0 

我用這個命令來嘗試GE某事,但不能得到理想的結果。

for /f "tokens=* delims=," %i in file.data do echo %i 

感謝

+0

我投票結束這個問題作爲題外話,因爲它沒有顯示研究工作 – Daniel

+0

我做了一些研究,但沒有得到所需的結果。 – user3676305

+0

Powershell中的解決方案也是「允許」? –

回答

2

在cmd.exe的,你可以做到以下幾點:

for /f "tokens=1-3,* delims=," %i in (tst.txt) do @if %k GTR 0 echo %i,%j,%k,%l 

你幾乎嘗試了,有什麼,但有幾個變化:

​​

這將讓你

140919071513,12,67,1,0,0 
140919071513,13,89,1,0,0 
140919071513,15,32,1,0,0 
140919071513,18,78,1,0,0 
140919071513,20,34,1,0,0 
+0

非常感謝這個很好的描述和答案。保重。 – user3676305

2

只是對你有PowerShell的手頭的情況:

Import-Csv .\file.data -Header "A","B","C","D","E","F"|where {$_.C -ne 0}|foreach-object {Write-host("$($_.A),$($_.B),$($_.C),$($_.D),$($_.E),$($_.F)")} 

與最後一部分「的foreach對象{寫主機......」可能被優化,但它在這種情況下起作用。

2
findstr /v /r /c:"^[^,]*,[^,]*,0," file.data 

這將列出所有不匹配(/v)正則表達式(/r)行:從線(^)不包含逗號的零個或多個字符的任何序列的開始( [^,]*),後跟一個逗號,任何不包含逗號,逗號,零和逗號的零個或多個字符的序列。