0

私のテキストファイルにはこの行があります。

08.01.2013 20:06:36: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:00: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:24: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:50: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
09.01.2013 15:39:57: lalka (95.165.55.92:15609) 161c5a17c5afc0b1e079fca7fdc8f1a9 - #0

コマンドFindstrごとにテキストファイルをフィルタリングしたいのですが、これは機能しますが、32桁の単語のみをフィルタリングするように機能させることはできません。たとえば、04ee8dfa81f700bba194a528911ecb4aおよび161c5a17c5afc0b1e079fca7fdc8f1a9です。これまでのところ、行全体をフィルタリングすることによってのみ機能します。

32桁の記号/トークンだけをフィルタリングする方法を知っている人はいますか?

4

1 に答える 1

1

FINDSTRは、一致する行全体のみを印刷できます。テキストの一致する部分のみをリストできるgrepのような機能はありません。

FOR / Fコマンドは、データの形式に応じて、テキスト行からトークンを抽出するためによく使用されます。FINDSTRを使用して適切な行のみを選択し、FOR/Fを使用してそれらの結果を処理して32桁のトークンを抽出することができます。

あなたのFINDSTR検索条件が何であるかわからないので、例として使用するために何かを作ります。で終わる行の32桁のトークンを出力するとし#0ます。

FINDSTRは適切な行を選択し、で終わる行を探し#0ます。そして、FOR / Fは、結果の各行をスペースで区切られたトークンに解析します。(トークン区切り文字はDELIMSオプションを使用して変更できますが、デフォルトではスペースとタブです)。5番目のトークンが必要です。

for /f "tokens=5" %%A in ('findstr /le " #0" "someFile.txt"') do echo %%A


OPコメントに応じて編集

行をフィルタリングする必要がなく、32桁の各IDを新しいファイルに書き込むだけの場合は、さらに簡単です。

(for /f "tokens=5" %%A in (logged-players.log) do echo %%A) >logged-bans.txt
于 2013-01-16T22:23:38.797 に答える