2009-01-14 19 views
3

我有一個文件'records.txt',其中包含超過200,000條記錄。計數沒有。在Unix中的一個文件中的分隔符行

每條記錄​​位於一個單獨的行中,並具有多個由分隔符「|」分隔的字段。

每行應該有35個字段,但問題是這些行中的一個具有<> 35個字段,即<> 35'|'字符。

有人可以請在Unix中提出一種方法,通過它我可以識別該行。 (例如獲取計數「|」在文件中的字符每行中)

回答

11

試試這個:

awk -F '|' 'NF != 35 {print NR, $0} ' your_filefile 
+0

+1,U打敗我由24secs :) :) – 2009-01-14 10:10:52

+1

Heh。我喜歡這個:) – 2009-01-14 10:13:56

1

這個小perl腳本應該這樣做:

cat records.txt | perl -ne '$t = $_; $t =~ s/[^\|]//g; print unless length($t) == 35;' 

這是通過刪除所有字符除了的|,然後計數剩下什麼。

+0

沒用使用這裏檢測到的貓... – Keltia 2009-01-14 11:21:03

1

格雷格的使用bash的東西的方式,這場舞會的朋友那裏:)

while read n; do [ `echo $n | tr -cd '|' | wc -c` != 35 ] && echo $n; done < records.txt 
相關問題