Skip to content

Instantly share code, notes, and snippets.

@kunst1080
Last active December 18, 2015 21:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kunst1080/5845195 to your computer and use it in GitHub Desktop.
Save kunst1080/5845195 to your computer and use it in GitHub Desktop.
sedっぽことをするためのBATファイル@がんばらない
@if (1==1) /*
@echo off
if "%~1"=="" goto :USAGE
if "%~1"=="/?" goto :USAGE
rem ********************************************************************************
:MAIN
CScript //nologo //E:JScript "%~f0" %*
If ERRORLEVEL 1 goto :USAGE
goto :eof
rem ********************************************************************************
:USAGE
echo USAGE:
echo %~n0 正規表現
echo 標準入力を正規表現で置換し、標準出力へ出力します。
echo 内部処理には、JScriptの「replace」メソッドを使用していますので、
echo 細かい仕様はそちらに依存します。
echo.
echo ※改行コードはCRLFとして読み込み・出力します。
echo.
echo 【引数】
echo 正規表現
echo 例)s/string/dist/g
goto :eof
rem ********************************************************************************
rem */
@end
//----------------------------------------------------------
if (WScript.Arguments.Lrngth == 0)
WScript.Quit(9);
var re = WScript.Arguments(0).split("/");
var objRe = new RegExp(re[1], re[3]);
while (!WScript.StdIn.AtEndOfStream){
var line = WScript.StdIn.ReadLine() + "\r\n";
WScript.StdOut.Write(line.replace(objRe, re[2]));
}
WScript.Quit(0);
@echo off
call %LOCAL%\batlib\bin\batrc.bat
set OUT1="%~dpn0_out1.txt"
set OUT2="%~dpn0_out2.txt"
if exist "%OUT1%" del "%OUT1%"
if exist "%OUT2%" del "%OUT2%"
call nearDoc "%~0" "HERE" ^
| findstr /v "^\*" ^
| findstr /v "^;" ^
| findstr /v "^@[^@]" ^
| call sed "s/\r\n//g" ^
| call sed "s/(\[pm\]|\[lr\]|\[r\])/\r\n/g" ^
| call sed "s/\\r\\n\\r\\n(\\r\\n)+/\r\n\r\n/g" ^
| call sed "s/\[.+?\]//g" ^
| gawk "gsub(/\\r\\n/,\"\n\",$0) || 1" > "%OUT1%"
call nearDoc "%~0" "出力イメージ" > "%OUT2%"
fc /n "%OUT1%" "%OUT2%"
echo ERRORLEVEL:%ERRORLEVEL%
if not errorlevel 1 del "%OUT1%" "%OUT2%"
pause
exit /b
HERE>
*FC908B62_CB98_4E6E_890A_D77751AD9FE6|
[cm]
『どうだ、無線機を届けてやるから、土日にでも温泉に行かないか? もちろん俺が全費用だすぜ』[lr]
[r]
[r]
「はあ、土日には予定が……」[lr]
[r]
 ゲンさんはとてもいい人である。親身になっていろいろと相談も乗ってくれる。[r]
 だが、その誘いには決して乗ってはいけない。[lr]
 なぜなら、ゲンさんは……、[pm]
*E8EB4063_7AAB_4FA8_BA58_1D8DC2E0DA76|
[cm]
 男性が好きな親父さんなのだ。[lr]
[r]
 ゲンさん曰く、[r]
「俺ぐらいのベテランになると、声だけで大体の性格と体型がわかるんだぜ。俺の勘では直哉は俺好みに間違いねえ。今まではずしたことないんだぜ」[r]
 と……。[pm]
<HERE
出力イメージ>
『どうだ、無線機を届けてやるから、土日にでも温泉に行かないか? もちろん俺が全費用だすぜ』
「はあ、土日には予定が……」
 ゲンさんはとてもいい人である。親身になっていろいろと相談も乗ってくれる。
 だが、その誘いには決して乗ってはいけない。
 なぜなら、ゲンさんは……、
 男性が好きな親父さんなのだ。
 ゲンさん曰く、
「俺ぐらいのベテランになると、声だけで大体の性格と体型がわかるんだぜ。俺の勘では直哉は俺好みに間違いねえ。今まではずしたことないんだぜ」
 と……。
<出力イメージ
@kunst1080
Copy link
Author

右側に「\r\n」を入れても文字扱いになってしまって改行に置換できない問題が致命的ではある。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment