ABOUT THIS SITE



SEARCH



Calendar

< 2007/06 >
    123
45678910
11121314151617
18192021222324
252627282930 


package パッケージ名;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

/**
* 引数で指定したファイルを指定した文字列で置換える。
* java tool.Replace [ファイル名] [置換元文字列] [置換文字列]
* 例 C:\temp.txt testtarget testreplace する します
*/
public class Replace {
/** 対象文字列 */
private static String target;

/** 置換文字列 */
private static String replace;

/** 指定ファイル名 */
private static String filename;

public static void main(String[] args) throws IOException {
filename = args[0];
target = args[1];
replace = args[2];
searchDir(filename);
}

/**
* 指定ファイルの中に含まれるtargetをreplaceに置換する。
* @throws IOException
*/
private static void searchDir(String filename) throws IOException {

String[] lines = getLines(filename);
for (int j = 0; j < lines.length; j++) {
lines[j] = lines[j].replaceAll(target,replace);
}
PrintWriter output =
new PrintWriter(new BufferedWriter(new FileWriter(filename)));
for (int j = 0; j < lines.length; j++) {
output.println(lines[j]);
}
output.close();
}

/**
* 指定したファイルをテキストストリームで全て読み込んでString配列に
* 格納して返します。
* @param filePath 指定したテキストファイルのパス
* @return 読み込んだファイルの中身
*/
private static String[] getLines(String filePath) throws IOException {
BufferedReader input = new BufferedReader(new FileReader(filePath));
ArrayList list = new ArrayList(5000);
String line = null;
while ((line = input.readLine()) != null) {
list.add(line);
}
String[] lines = new String[list.size()];
list.toArray(lines);
input.close();
return lines;
}
}
2007-06-15_00:03-suzu::General

sedコマンドは文字列の置換、削除、挿入が行える。

sed [オプション][コマンド][ファイル名]

文字列置換する例

sed s/パターン/置換文字列/g [対象ファイル]

ファイルの指定行を削除する例

sed '指定行の数値,指定行の数値d' [対象ファイル]

2007-06-07_22:32-suzu::Linux

リモートホストへの転送方法 (scp)

scp コマンドはファイルをSSHで暗号化した上で転送してくれるコマンドです。

ローカルからリモートもしくはリモートからローカルへの転送に使用できます。

(使用方法)
scp [オプション][転送したいファイル名[ユーザ名]@[ホスト名]:[パス]

主なオプションは以下の通りになります。

-r ディレクトリを再帰的にコピーします
-p ファイルのパーミッションや、最終変更時刻を保ったまま転送
-v 経過を詳細に出力

2007-06-06_23:31-suzu::Linux