web-dev-qa-db-ja.com

Windows 7から10で同等のgrep文字列

Linuxで次のコマンドと同等のコマンドをWindowsで見つけたい:

cat file.txt | grep -oP '\d{5}-\d{5}'

でる

99527-86793

と:

findstr /R "pattern" file.txt 

私はこれを試しますが、部分的に動作します。

findstr [0-9]-[0-9] file.txt

でる:

de4f2114-847c-4cf2-8a0b-a38d04c0fdac1/1
99527-86793

出力をこれらの数値のみに区切るにはどうすればよいですか。開始と終了の5つの数値0〜9-5つの数値0〜9

うん

2
ajcg

このような何かがトリックを行います:

findstr [0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9] file.txt

grep for windows にも興味があるかもしれません。

3
iskyfire

findstrは一致を抽出しません。見つかった文字列のみを返します。 正規表現を扱うときは、powershellを使用することをお勧めします。次のようなことができます:

select-string -Path 'c:\input.txt -Pattern '\d{5}-\d{5}' -AllMatches | % { $_.Matches } | % { $_.Value } > 'c:\output.txt'

https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.utility/select-string?view=powershell-7

編集:findstrが一致を返すことができないというのは間違っていましたが、正規表現にはPowershellを使用することをお勧めします.

1
GSerrano