5

この質問は、あるファイルから別のファイルに行を選択的に追加することに関する別の質問の続きです。

私が使用している正規表現は、保持/破棄する行を一致させるのにうまく機能します。問題は、ファイルが他のファイルの束から構成されており、保持したい行が UTF-8 でエンコードされたファイルの最初の行として開始される場合があることです。これは、findstrコマンドが次のようなものを返すことを意味します。

LineToKeep that started out as the first line in its file
LineToKeep another
LineToKeep more lines
LineToKeep that started out as the first line in its file
LineToKeep more

BOM バイトを除いて、行は常に「LineToKeep」で始まることが保証されています。これらの 3 つの UTF-8 BOM バイトは、これらの Windows シェル コマンドでは適切に処理できないため、どうすれば削除できますか?

findstrそれらを適切に削除する方法、またはおそらく前の質問からのコマンドの変更を望んでいます。

各行は「LineToKeep」または「∩╗┐LineToKeep」で始まる必要があることがわかっているので、すべての行について次のように計算する方法があると思いif (Line[3:10] == "LineToKeep") { Line = Line[3:]; }ます。

4

2 に答える 2

1

Windows cmdでPowerShellを呼び出すことになりました:

powershell . "Get-ChildItem . | Select-String '^LineToKeep' | foreach {$_.Line}"
于 2012-10-12T19:22:44.137 に答える