簡単なツールほどポイントを上げます。
なお、vimで出来るのはわかっています。
例として
正規表現 abc|def|ghi
2aaa222bbb2
11abc111111
1111def1111
11ghi111ddd
22gggg22222
↓
abc
def
ghi
のような形にしたいです。
※正規表現で一致したもの以外を削除する方法が知りたいのであり
例に対してこういう正規表現すれば解決できるよといった回答は
不要です。(実際ははるかに複雑なため)
宜しくお願いします。
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();
UNIX関連には疎いのでsed使ったことはなかったので調べてみました。
-n -e オプション辺りを使えば 上記の動作が出来そうな感じですね。
これなんか意図されてる動作をしそうです
http://www.forest.impress.co.jp/article/2005/08/10/okiniiri.html
本来はテスターみたいですが
おお。これは意図通りの動作です! ファイルから読み込めない、出力できない以外は完璧な気がします。
ありがとうございました!
秀丸エディタで
まず
検索する文字列:(abc|def|ghi)
でgrepし、
その後、
検索:^.*(abc|def|ghi).*$
置換:\1
で置換を行えば可能かと思います。
なるほど!この方法は思いつきませんでした。
最初にgrepで引っ張っておいてそのあとそれ以外を消すと。
ありがとうございました!
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();
この方法を利用させていただきました! ありがとうございました。
この方法を利用させていただきました! ありがとうございました。