私はFAKEには新しく、下記のようにFAKEで何かを実装しようとしています: 私は100行以上のファイルを持っています。コード、2行目をIFR.SIIC._0.12
に変更したいとしましょう。 IFR.SIIC._0.45
与えられたファイルのテキストを置き換えます - FAKE F#MAKE
どうすればよいですか? ReplaceInFileまたはRegexReplaceInFileWithEncodingを使用してこれを行いますか?
私はFAKEには新しく、下記のようにFAKEで何かを実装しようとしています: 私は100行以上のファイルを持っています。コード、2行目をIFR.SIIC._0.12
に変更したいとしましょう。 IFR.SIIC._0.45
与えられたファイルのテキストを置き換えます - FAKE F#MAKE
どうすればよいですか? ReplaceInFileまたはRegexReplaceInFileWithEncodingを使用してこれを行いますか?
あなたに役立つ機能はたくさんあります。どちらを選択するかは、コードを書く方法によって異なります。たとえば、ReplaceInFile
はファンクションを指定しますが、RegexReplaceInFileWithEncoding
には正規表現(文字列の形式で、Regex
オブジェクトではありません)を指定する必要があります。置き換えたいテキストによっては、他のテキストより簡単かもしれません。たとえば、あなたがそうのようReplaceInFile
使用することができます
Target "ChangeText" (fun _ ->
"D:\Files\new\oneFile.txt" // Note *no* !! operator to change a single file
|> ReplaceInFile (fun input ->
match input with
| "IFR.SIIC._0.12" -> "IFR.SIIC._0.45"
| "another string" -> "its replacement"
| s -> s // Anything else gets returned unchanged
)
)
。しかし、より簡単な関数ReplaceInFiles
(複数に注意してください)は、複数のファイルを一度に複数のファイルに置き換えることができます。また、ファンクションをパラメータとして使用する代わりに、ReplaceInFiles
は、のシーケンスを(old,new)
のペアにします。これは、多くの場合、書き込みをする方が簡単です:
let stringsToReplace = [
("IFR.SIIC._0.12", "IFR.SIIC._0.45") ;
("another string", "its replacement")
]
Target "ChangeText" (fun _ ->
!! "D:\Files\new\*.txt"
|> ReplaceInFiles stringsToReplace
)
フォーム、正規表現での検索や交換の文字列を指定したい場合は、あなたが複数の点に注意してください(RegexReplaceInFileWithEncoding
またはRegexReplaceInFilesWithEncoding
をしたいと思います:前者は、1つのファイルを取ります後者は複数のファイルを取ります)。あなたはABC.WXYZ._0.45
にIFR.SIIC._0.45
とABC.WXYZ._0.12
にIFR.SIIC._0.12
を変更することができるようになる
Target "ChangeText" (fun _ ->
!! "D:\Files\new\*.txt"
|> RegexReplaceInFilesWithEncoding @"(?<part1>\w+)\.(?<part2>\w+)\._0\.12"
@"${part1}.${part2}._0.45"
System.Text.Encoding.UTF8
)
:私はちょうどあなたに複数のファイルのバージョンの例を紹介します。
どのファイルをどれだけ使用するかは、ファイルの数と必要な置換文字列の数(正規表現を書き込むのがどれほど難しいか)によって決まります。
すてきな答えをありがとう:) – KMittal
こんにちはrmunn:文字列を持つ変数から文字列を置き換えたいです。 など: @ "admintool:RBI.ICISApi.AdminTool _" + version_no バインディングで予期しない見積もり記号が表示される – KMittal
@KMittal - おそらくF#コードの構文エラーです。全体の機能を見ることなくあなたの質問に答えることはできません。新しい質問を開き、もう一度質問し、コードサンプルを必ず含めてください。エラーのある関数全体を表示し、 '{}'ボタンで正しくインデントすることを忘れないでください。 – rmunn