node.jsでのスクリプトの引数や、ファイルの読み込みについてのメモ

node.jsで、JavaScriptに引数を与えたり、ローカルのファイルを読んだりする方法のメモ。

スクリプトの引数は、process.argvの3つ目以降に入っている。

// arg.js
var args = process.argv;
// args[0]: node
// args[1]: このスクリプトファイルへのパス
for (var i = 2; i < args.length; ++i ) {
    console.log('args[' + i + ']: ' + args[i] );
}

> node arg.js 1st 2nd 3rd 4th
args[2]: 1st
args[3]: 2nd
args[4]: 3rd
args[5]: 4th
ファイルの読み込みはfs.readFile()で行える。

var fs = require('fs');
var filename = "test.txt";

fs.readFile( filename, 'utf8', function (err, data) {
	if (err) {
		console.log(err);
	} else {
		console.log(data);
	}
});

例えば、以下のような内容のtext.txtがあって、

I prefer Python.
I prefer Python.
I prefer Python.
I prefer Python.

このファイルの内容を置換して出力するスクリプト。

if(!Array.prototype.last) {
	Array.prototype.last = function() {
	return this[this.length - 1];
	}
}

var args = process.argv;
var fs = require('fs');

if ( args.length < 5 ) {
	src_file = args[1].split('\\').last();
	console.log("usage: node " + src_file + " targetfile old new");
	return;
}
var filename = args[2], old_str = args[3], new_str = args[4];

fs.readFile( filename, 'utf8', function (err, data) {
	if (err) {
		console.log(err);
	} else {
		data = data.replace(RegExp(old_str, 'mg'), new_str);
		console.log(data);
	}
});

こんな感じにできる。

>node replace.js test.txt Python JavaScript
I prefer JavaScript.
I prefer JavaScript.
I prefer JavaScript.
I prefer JavaScript.
Advertisements

3 comments

  1. Pingback: 非同期のファイルの読み書きについてもう少し « dgakane's Blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s