2016-07-05 73 views
1

我試圖發明一個命令,它添加到行的文件索引,其中逗號的數目小於5 +行中的逗號數。假設結果:加入文件:行的索引和特定模式的總數

假設輸入:

'abc','abc','abc','abc,'abc,'abc 
'abc','abc','abc','abc,'abc,'abc,'abc 
'abc','abc','abc','abc,'abc,'abc,'abc,'abc' 

所以在第一行有5個逗號,在第二 - 6和第三 - 7 和預期的結果:

Index: 2 Number of commas : 6 
Index: 3 Number of commas : 7 

我發明了那個命令,如果逗號大於50,就把所有內容放入errors.csv中。

awk -F , 'NF > 50' <filename.csv >> errors.csv 

對我來說最難的是 - 如何檢索並放入文件索引的行? 你能支持我嗎?

+0

目前尚不清楚你的意思。你可以[編輯]給更多的細節? – fedorqui

+0

你好,編輯我的問題 – bazyl

回答

2

可以使用的awkNRNF變量得到這個預期輸出:

awk -F"," '{ if(NF > 6) printf("Index: %d Number of commas : %d\n", NR, NF-1); }' filename.csv 

NR給你的記錄數在一個文件中。

+0

偉大的,這正是我所尋找的,爲什麼有%d和%d \ n,你能解釋我嗎?謝謝 – bazyl

+0

這就是'printf'的格式說明符。 REF:https://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output – Fazlin

+0

Fazlin,我還有一個問題。現在我必須搜索從Act *開始的所有文件,如果不包含更多13個逗號。但現在除了逗號和索引我還想把那裏的文件名。 eg.Index:15,逗號數:13,文件名:Act123.csv等 – bazyl