バッチスクリプトで、ファイルのすべての行の最後の1単語まで、および最後の1単語と最後の単語の間にコンマを挿入する必要があります。単語間のスペースはコンマで置き換える必要があります。
例:テストファイル:
This is first line
This is the second line
Check Subsystem version 3.1.8-11P
出力を次のようにします。
This is,first,line
This is the,second,line
Check Subsystem,version,3.1.8-11P
このスクリプトは最後の単語の前にコンマを挿入していますが、&の間に行があり、&記号が含まれている行を削除しています。
例:バージョン1.1.1の作成と削除
この行は削除されます。
@echo off
for /f usebackq^ delims^=^ eol^= %%A in ("Doc.txt") do (
set "s=%%A"
set "s1=%%A"
setlocal enableDelayedExpansion
set "s=!s:@=@a!"
set "s=!s:\=@b!"
set "s=!s:/=@f!"
set "s=!s:.=@d!"
set "s=!s: =.!"
for /f "delims=" %%A in (".!s!") do (
endlocal
set "s=%%~xA"
setlocal enableDelayedExpansion
if defined s (
set "s=!s:.= !"
set "s=!s:@d=.!"
set "s=!s:@f=/!"
set "s=!s:@b=\!"
set "s=!s:@a=@!"
set "s=!s:~1!"
call set s2=%%s1:!s!=%%
echo !s2!,!s! >> output.txt
)
endlocal
)
)
pause
また、コンマを最後から1語だけ挿入する方法もわかりません。
これは、正規表現をサポートする任意のテキストエディタで
\W+(\w+)\W+(\w+)$
、置換文字列として検索して使用することで簡単に実行できます,$1,$2
。
Windowsコマンドライン環境を使用してファイル内のテキストを検索して置き換えるにはどうすればよいですか?1つの回答に、Dave Benhamによって作成された最新バージョンのJREPL.BATへのリンクが含まれています。これにより、正規表現の検索と置換文字列を使用してファイルにこの変更を加えることができます。
実行されたバッチファイルと同じディレクトリにあるこの追加のバッチファイルを使用して、バッチファイル内からJREPL.BATを使用するには:
call "%~dp0jrepl.bat" "\W+(\w+)\W+(\w+)$" ",$1,$2" /F "%~1" /O -
"%~1"
この汎用コマンドラインでは、変更するファイルの名前を参照しています。
jrepl.bat /?
ここで使用されている他のオプションについてヘルプを求めて実行します。
call /?
このコマンドのヘルプと%~dp0
(バックスラッシュで終わる現在のバッチファイルのドライブとパス)の説明を実行します。
正規表現の説明replace:
\W+
... Unicode標準に従って1つ以上の非単語文字を検索します。(\w+)
... Unicode標準に従って1つ以上の単語文字を検索し、見つかった文字列を逆参照用にマークして、文字列を$1
。に置き換えます。\W+
... Unicode標準に従って、1つ以上の単語以外の文字を再度検索します。(\w+)
... Unicode標準に従って1つ以上の単語文字を再度検索し、見つかった文字列を逆参照用にマークして、文字列を$2
。に置き換えます。$
...検索式は、行末に2つの単語が見つかり、改行文字が一致しない場合にのみ、正の一致になります。次のような行の場合
Check Subsystem version 3.1.8-11P
これを次のように変更する必要があります
Check Subsystem,version,3.1.8-11P
ファイルに別の正規表現検索文字列は、のために必要である.
と-
されている非ワード文字のUnicode標準に従いました。
検索文字列は次のように変更する必要があります。 [^\w.\-]+([\w.\-]+)[^\w.\-]+([\w.\-]+)$
[
...]
は、角括弧内に指定された任意の文字に一致する正の文字クラス定義です。
[^
...]
は、角括弧内に指定されていない文字に一致する負の文字クラス定義です。
\w
Unicode標準に従ったすべての単語文字の特殊文字クラス定義です。
.
正または負の文字クラス定義の角括弧内は、リテラル文字として解釈されます。ドット文字は、文字クラス定義の外正規表現検索文字列で特別な意味を持っているでしょう。
-
正または負の文字クラス定義の角括弧内は、文字XおよびYのコード値に従って、左に指定された文字Xから右に指定さ-
れた文字Yまでのすべての文字を意味します。文字がない場合、ハイフンはリテラル文字としても解釈されます-
。文字クラス定義の内側に左または右のいずれか。ただし、ハイフン文字をリテラル文字として解釈する必要がある場合は、角かっこ内の位置に関係なく、文字クラス定義内で円記号を使用してエスケープすることをお勧めします。文字クラス定義の外では、ハイフン文字には特別な意味はありません。-
-
したがって、「単語」として解釈されるドットとハイフンを含む文字列を含むファイルに使用するコマンドライン全体は次のとおりです。
call "%~dp0jrepl.bat" "[^\w.\-]+([\w.\-]+)[^\w.\-]+([\w.\-]+)$" ",$1,$2" /F "%~1" /O -
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加