人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

正規表現で一致したもの以外を削除する方法(windows用ツール)が知りたいです。
簡単なツールほどポイントを上げます。
なお、vimで出来るのはわかっています。

例として
正規表現 abc|def|ghi

2aaa222bbb2
11abc111111
1111def1111
11ghi111ddd
22gggg22222

abc
def
ghi

のような形にしたいです。

※正規表現で一致したもの以外を削除する方法が知りたいのであり
例に対してこういう正規表現すれば解決できるよといった回答は
不要です。(実際ははるかに複雑なため)

宜しくお願いします。

●質問者: tikirou
●カテゴリ:コンピュータ インターネット
✍キーワード:ABC def vim Windows ポイント
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●10ポイント

Windows用のsedをお探しということでしょうか。

“簡単”の定義が分かりませんが、基本は下記のツールでしょう。

◎質問者からの返答

UNIX関連には疎いのでsed使ったことはなかったので調べてみました。

-n -e オプション辺りを使えば 上記の動作が出来そうな感じですね。


2 ● xcaqhbaj
●20ポイント

これなんか意図されてる動作をしそうです

http://www.forest.impress.co.jp/article/2005/08/10/okiniiri.html

本来はテスターみたいですが

◎質問者からの返答

おお。これは意図通りの動作です! ファイルから読み込めない、出力できない以外は完璧な気がします。

ありがとうございました!


3 ● hu2
●20ポイント

秀丸エディタで

まず

検索する文字列:(abc|def|ghi)

でgrepし、

その後、

検索:^.*(abc|def|ghi).*$

置換:\1

で置換を行えば可能かと思います。

◎質問者からの返答

なるほど!この方法は思いつきませんでした。

最初にgrepで引っ張っておいてそのあとそれ以外を消すと。

ありがとうございました!


4 ● ardarim
●40ポイント ベストアンサー

JavaScriptで書いてみました。

適当なファイル名(例:re.js)で保存して

cscript /nologo re.js 入力ファイル名 "正規表現"

で実行できます。

結果をファイルに出力する場合はリダイレクトで。

cscript /nologo re.js 入力ファイル名 "正規表現" > 出力ファイル名

fso = WScript.CreateObject("Scripting.FileSystemObject");

fileName = WScript.arguments.item(0);
re = new RegExp(WScript.arguments.item(1), "g");

try {
 src = fso.openTextFile(fileName, 1, false, 0);
} catch(e){
 WScript.echo(e);
 WScript.echo("Failed to open '" + fileName + "'.");
 WScript.quit();
}

while(!src.atEndOfStream){
 t = src.readLine().match(re);
 if(!t) continue;
 WScript.echo(t.join(""));
}

src.close();
◎質問者からの返答

この方法を利用させていただきました! ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ