• ベストアンサー

特殊文字の数を調べる

ファイルの中から、特殊文字(フォームフィード"x0c")がいくつ存在するかを調べたいのですが、上手くとれません。 ファイル容量が大きいため、効率良く調べたいのですが、下記の様にはき出した出力ファイルの長さを調べたのですが、出力には改行(x0a)も含まれてしまいます。 sed -e 's/[^\f]//g' text.in > text.out sed -e 's/[^\014]//g' test.txt > text.out sed以外でも良いので、shellなどを利用し解決する方法をお教え頂けませんでしょうか。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

perlなら perl -e 'while(<>){$ctr+=s/\f//g;}print $ctr' text.in > text.out

trafic
質問者

お礼

一行でできるとは素晴らしい! 試してみましたが、希望通りできました。 感謝です、ありがとうございました。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

C言語を使うのはダメでしょうか? 以下の点線内部を切り取って、charcnt.c(名前は適当)とし、 gcc(Linux等なら)で >gcc -o charcnt charcnt.c とするとcharcntという実行ファイルができます。 >./charcnt < text.in とするとカウントされます。 日本語が混じっているファイルでも、 文字コードがシフトJISかEUCなら動くはずです。 JISコードとUnicodeの場合はよくわからないですが…。 よければ使ってください。 ------------ #include <stdio.h> int main(void){ int c; int count = 0; while((c = getchar()) != EOF){ if(c == 0x0c)count++; } printf("%d\n", count); return 0; } ---------------

trafic
質問者

お礼

回答ありがとうございます。 Cはあまり知らないのですが、試してみます。

関連するQ&A