ブログ内検索
カテゴリー
フリーエリア
最新CM
(10/07)
(08/29)
(08/19)
(08/19)
(06/23)
カレンダー
07 | 2025/08 | 09 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
最新TB
最新記事
(05/12)
(03/16)
(03/04)
(02/26)
(02/24)
カウンター
最古記事
(08/22)
(08/23)
(08/24)
(08/24)
(08/24)
プロフィール
HN:
Tassie
年齢:
44
性別:
男性
誕生日:
1980/09/19
趣味:
音楽・映画・スポーツ
アクセス解析
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
用途:
文字列検索処理のテスト用
圧縮の効きにくいファイルが必要な時
あまり凝らずに、簡単な方法でランダムな中身のファイルを作ってみます。
strfryを使って、ランダムな文字列を作ります。
下記の例だと、8000ループで、512KBのファイルが出来ます。
1ファイル作成するのに、0.1秒も掛かりません。環境にもよりますが。。
------------------------------------------------------------
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
char str[256] = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
FILE *fp;
int i;
char filename[256];
strcpy(filename,argv[1]);
fp = fopen(filename, "w");
for(i=0;i<8000;i++){
strfry(str);
fprintf(fp, "%s\r\n", str);
}
fclose(fp);
}
------------------------------------------------------------
strfryのマニュアルページ
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strfry.3.html
strfry - 文字列をランダムに並べ変える
strfry() 関数は、文字列 string の内容をランダムに並び換える。並び換えは、 rand(3) 関数を用いて、文字列中の各文字を無作為に交換することで実現される。結果は、文字列 string のアナグラムである。
文字列検索処理のテスト用
圧縮の効きにくいファイルが必要な時
あまり凝らずに、簡単な方法でランダムな中身のファイルを作ってみます。
strfryを使って、ランダムな文字列を作ります。
下記の例だと、8000ループで、512KBのファイルが出来ます。
1ファイル作成するのに、0.1秒も掛かりません。環境にもよりますが。。
------------------------------------------------------------
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
char str[256] = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
FILE *fp;
int i;
char filename[256];
strcpy(filename,argv[1]);
fp = fopen(filename, "w");
for(i=0;i<8000;i++){
strfry(str);
fprintf(fp, "%s\r\n", str);
}
fclose(fp);
}
------------------------------------------------------------
strfryのマニュアルページ
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strfry.3.html
strfry - 文字列をランダムに並べ変える
strfry() 関数は、文字列 string の内容をランダムに並び換える。並び換えは、 rand(3) 関数を用いて、文字列中の各文字を無作為に交換することで実現される。結果は、文字列 string のアナグラムである。
PR
仕事柄、メールサーバの性能評価などで、メールを大量に送ることがあります。
そんな時に使うのが下記のようなスクリプト。
seqコマンドで指定した数だけメール送信することが可能です。
また、本文の内容をランダムにするために、/dev/urandomから
headコマンドで指定したサイズのデータを取得しています。
下記の例だと、毎秒、100KB程度のメール100通まで、hoge@hoge.dom.jp宛てに送信します。
(注:絶対に悪用しないように!)
-------------------------------------------------------------
#!/bin/bash
for x in `seq 1 100`
do
date >> /tmp/mailsend_seq.log
echo $x >> /tmp/mailsend_seq.log
head -c 100k /dev/urandom > /tmp/test.txt
mail -s testmail$x hoge@hoge.dom.jp < /tmp/test.txt
sleep 1
done
exit
-------------------------------------------------------------
そんな時に使うのが下記のようなスクリプト。
seqコマンドで指定した数だけメール送信することが可能です。
また、本文の内容をランダムにするために、/dev/urandomから
headコマンドで指定したサイズのデータを取得しています。
下記の例だと、毎秒、100KB程度のメール100通まで、hoge@hoge.dom.jp宛てに送信します。
(注:絶対に悪用しないように!)
-------------------------------------------------------------
#!/bin/bash
for x in `seq 1 100`
do
date >> /tmp/mailsend_seq.log
echo $x >> /tmp/mailsend_seq.log
head -c 100k /dev/urandom > /tmp/test.txt
mail -s testmail$x hoge@hoge.dom.jp < /tmp/test.txt
sleep 1
done
exit
-------------------------------------------------------------
例えば、古いLinux環境のように、EUCが標準の時代に作成した
ファイルを、UTF-8のシステムに持っていって使う場合、日本語が
入ったファイルだと文字コード変換が必要になる。
そんな時に便利なのが、nkfやiconvだ。
ここでは、通常のLinux環境なら標準で入っているであろうiconvを使う。
iconv -f euc-jp -t utf-8 filename -o outfile
このコマンドで"filename"というファイルを文字コード変換して、
"outfile"という名前のファイルに出力してくれる。
特定ディレクトリ内の*.txtファイルを一括で文字コード変換する場合は
下記のようにコマンドラインで実行する。
for x in *.txt ;do echo $x; /usr/bin/iconv -f euc-jp -t utf-8 $x -o
$x.new; mv -f $x.new $x; done
ファイルを、UTF-8のシステムに持っていって使う場合、日本語が
入ったファイルだと文字コード変換が必要になる。
そんな時に便利なのが、nkfやiconvだ。
ここでは、通常のLinux環境なら標準で入っているであろうiconvを使う。
iconv -f euc-jp -t utf-8 filename -o outfile
このコマンドで"filename"というファイルを文字コード変換して、
"outfile"という名前のファイルに出力してくれる。
特定ディレクトリ内の*.txtファイルを一括で文字コード変換する場合は
下記のようにコマンドラインで実行する。
for x in *.txt ;do echo $x; /usr/bin/iconv -f euc-jp -t utf-8 $x -o
$x.new; mv -f $x.new $x; done
フォルダ内のファイルのバックアップを取る。
前回と同様、for文を使う。
同じフォルダ内に、.bakと拡張子をつけてコピーする。
for x in ./*; do cp -f $x $x.bak;done
for文をうまく使いこなすことが、シェル使いの第一歩かな。
ちなみに環境はCentOS4.2。
前回と同様、for文を使う。
同じフォルダ内に、.bakと拡張子をつけてコピーする。
for x in ./*; do cp -f $x $x.bak;done
for文をうまく使いこなすことが、シェル使いの第一歩かな。
ちなみに環境はCentOS4.2。
複数のファイルのとある文字列xxxを、yyyに一度に置き換えられたら
楽なのになー、と思うことがあります。
対象のファイル数が多いと、1ファイルずつエディタで書き直していたのでは
相当時間が掛かってしまいます。
コマンドライン上で一発でやる方法をご紹介します。
例:
カレントディレクトリ以下のファイル内の"charset=euc-jp"を
"charset=utf-8"に変換。
for x in `fgrep -l 'charset=euc-jp' */*`; do sed
s/'charset=euc-jp'/'charset=utf-8'/g $x > $x.new && mv -f $x.new $x; done
grepのオプションなどは、適宜変更して下さい。
☆おまけのTips☆
fgrepは正規表現が使えませんが、単純比較ならgrepより高速です。
sedで"/"を対象文字に入れる場合は@などで区切ります。
楽なのになー、と思うことがあります。
対象のファイル数が多いと、1ファイルずつエディタで書き直していたのでは
相当時間が掛かってしまいます。
コマンドライン上で一発でやる方法をご紹介します。
例:
カレントディレクトリ以下のファイル内の"charset=euc-jp"を
"charset=utf-8"に変換。
for x in `fgrep -l 'charset=euc-jp' */*`; do sed
s/'charset=euc-jp'/'charset=utf-8'/g $x > $x.new && mv -f $x.new $x; done
grepのオプションなどは、適宜変更して下さい。
☆おまけのTips☆
fgrepは正規表現が使えませんが、単純比較ならgrepより高速です。
sedで"/"を対象文字に入れる場合は@などで区切ります。