CSVファイルの行数を取得するためのUnixコマンド


20

着信CSVファイルから行数を取得する必要があります。

カウントを取得するには、次のコマンドを使用しました。

wc -l filename.csv

1レコードのファイルがあるとします。 \* 最初に、そして私が上記のコマンドを発行するならば、それらのファイルのためにそれはカウントを返します 0

なぜですか \* ファイルの先頭に数えた行として登録されていないし、回避策はありますか?


"cat filename.csv | wc -l"を試してください。
chaput

4
"cat filename.csv | wc -l"は論理的には "wc -l filename.csv"と同じ動作をしますが、効率が悪くエレガントです。
Alex

Devoloper250、最後の段落をもう少し明確にしてください。例も役に立つかもしれません。
Alex

例:Iamが1レコードのCSVファイルを取得していて、その行の先頭に*(アスタリスク)が含まれている。私は0としてカウントを取得しているが、理想的には1である必要がありますwc -l fn.csv iamを発行するとき*(アスタリスク)は他のワイルドカードのようにそこに行うために何か特別なことがありますか?
Devoloper250

"cat filename.csv"を実行したときの結果は何ですか?また、どのディストリビューションを使っていますか?
JNevill

回答:


9

終端されていない行も確実にカウントするための秘訣は次のとおりです。

cat filename.csv | xargs -l echo | wc -l

これは空でない行をすべて数えるように見えますが、空の行をスキップします。

これはかなり効果がないことに注意してください、しかしそれはおそらく職業上の使用にとって問題ではありません。

もう1つの可能性は、終端されていない最後の行を含むすべての行を数えることです。

awk '{n+=1} END {print n}' filename.csv

RHEL 6.2でテスト済み。 YMMV


awk コマンドはOS Xで動作します
Micah Stubbs

1

wcは、1行のみで末尾に改行がないファイルに対して0を報告します。たぶんあなたの1レコードのcsvファイルはこのようなものですか?例えば、hexdumpで末尾の改行を探すことができます。

hexdump -C fn.csv

最後にASCIIコード0aを探します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.