ファイルの分割

テキストファイルを複数に分割する

同等のawkプログラムへ

プログラム

プログラムは以下のようになります。 以下をタイプして、適当な名前でセーブしてください。ここでは div.pl という名前でセーブしたことにして話を進めます。
use FileHandle;

if ( $#ARGV != 1 ) {
	printf( "Usage:perl div.pl number filename\n" );
	exit;
}

for ( $i = 1; $i <= $ARGV[0]; $i++ ) {

	$filename = sprintf( "%s.%d", $ARGV[1], $i );
	$fh = new FileHandle( ">$filename" );
	if ( $fh == "" ) {
		printf( "Cannot open %s\n", $filename );
		exit;
	}	

	$handle[$i] = $fh;
}
	
open(IN, $ARGV[1]);

while( <IN> ) {
	s/[\r\n]//g;
	
	$num = ( $. % $ARGV[0] ) + 1;
	$handle[$num]->printf("%s\n", $_ );
}

close(IN);

for ( $i = 1; $i <= $ARGV[0]; $i++ ) {
	$handle[$num]->close();
}

exit;

入力データ

以下のようなファイル num.txt があるとします。
1
2
3
4
:
99

実行結果

OSはWindowsを利用していると 仮定します。 DOS prompt 上で、
c:\perl> perl div.pl 2 num.txt
とタイプします。 num.txt.1、num.txt.2という二つのファイルが作成されます。 もし三つに分割したい場合は
c:\perl> perl div.pl 3 num.txt
とすればよいのです。
メニューに戻る
Tkensaku

TKENSAKU top へ

Copyright © 2004 TKEN