- PR -

poor man's "sed"

1
投稿者投稿内容
Oregon
ベテラン
会議室デビュー日: 2001/08/01
投稿数: 52
お住まい・勤務地: Tualatin 97062
投稿日時: 2001-08-26 07:56
we have discussed an alternative of "stdin",
(see a different thread "stdin ?")
here is another application of "stdin",
poor man's "sed" - well sort of:
コード:

@for /f "delims=" %%i in ('more') do @set FOO=%%~i & echo !FOO:%~1=%~2!



sample run (1) self morphing
コード:

C:\> type sed.bat | sed.bat FOO BAR
@for /f "delims=" %%i in ('more') do @set BAR=%%~i & echo %1=%2



sample run (2) abs --> rel paths
コード:

C:\Program Files>dir/b/s *.exe | sed.bat "C:\Program Files" .
.\Common Files\Microsoft Shared\MSInfo\msinfo32.exe
...
.\FreeAmp\Tools\MakeTheme.exe



known bug - blank lines get deleted.
any fix?
Oregon
ベテラン
会議室デビュー日: 2001/08/01
投稿数: 52
お住まい・勤務地: Tualatin 97062
投稿日時: 2001-09-01 11:09
'findstr' fixes the blank-line missing bug:
コード:

@echo off
setlocal
for /f "tokens=1* delims=:" %%i in ('findstr /n "^"') do (
if "%%j"=="" (
echo.
) else (
set FOO=%%~j
echo !FOO:%~1=%~2!
)
)
endlocal
goto :eof



however special characters (&!) produce side effects as you can see by:
コード:

C:\> type sed.bat | sed.bat FOO BAR
...
) else (
set BAR=%%~j
echo set BAR=%%~j
)
...


sigh...
w2k scripting is masochism
1

スキルアップ/キャリアアップ(JOB@IT)