こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

特殊文字の数を調べる

ファイルの中から、特殊文字(フォームフィード"x0c")がいくつ存在するかを調べたいのですが、上手くとれません。
ファイル容量が大きいため、効率良く調べたいのですが、下記の様にはき出した出力ファイルの長さを調べたのですが、出力には改行(x0a)も含まれてしまいます。

sed -e 's/[^\f]//g' text.in > text.out
sed -e 's/[^\014]//g' test.txt > text.out

sed以外でも良いので、shellなどを利用し解決する方法をお教え頂けませんでしょうか。よろしくお願いいたします。

投稿日時 - 2004-06-13 10:38:19

QNo.890448

困ってます

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

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

投稿日時 - 2004-06-13 13:58:36

お礼

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

投稿日時 - 2004-06-13 14:23:03

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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;
}
---------------

投稿日時 - 2004-06-13 12:57:37

お礼

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

投稿日時 - 2004-06-13 14:20:37

あなたにオススメの質問