0

ファイル内の特定の行を見つけようとしています。Select-String を使用して一致を取得した場合、行全体は必要ありません。行の特定の部分 (エラー部分) だけが必要です。

これを行うために使用できるパラメーターはありますか?

例えば:

私がした場合

select-string USERINTERACTION file.txt

ファイルには次の行が含まれていました。

MainControlInterleaf-D: 21:59:14:631: myErrorShowTracer (300) -> Info::   USERINTERACTION: <this is the error part> from type <1> occured

行全体が返されるのではなく、ただの結果を取得したいと思います。


EDIT: 私が忘れていたもう1つのこと:行間に違いがある場合、コードで何を変更する必要がありますか?

例えば:

log-29-10-2013_00-11-52.txt:2737:MainControlInterleaf-D: 02:50:50:097: myErrorShowTracer (300) -> Info:: USERINTERACTION: <this is the error1> from type <1> occured
log-29-10-2013_00-11-52.txt:2732:MainControlInterleaf-D: 02:50:39:933: myErrorQuitTracer (350) -> Info:: USERINTERACTION <this is the error2<br> OK ... try again.<br>
4

4 に答える 4

0

Select-String は MatchInfo オブジェクトを出力します。次のようなものを使用します。

Select-String 'USERINTERACTION:\s*(.*?occured)' file.txt | Foreach {$_.matches.groups[1].value}
于 2013-10-31T12:44:58.180 に答える
0

file.txt が非常に大きなファイルでない限り、これでうまくいくはずです:'

$regex = '.+USERINTERACTION: (.+) from type <1> occured'
(get-content file.txt) -match $regex -replace $regex,'$1'
于 2013-10-31T12:52:26.290 に答える
0

Select-String -Pattern foo -Path X:\myfile.txt はどうですか

于 2013-10-31T12:53:08.487 に答える