Goでファイル内容の置換を行うCLIのツール(rcf)を作りました

ファイル内容の置換を行うrcfというCLIツールをGoで作りました。
"Replace the contents of the file" でrcfという名前にしています。

rcf

単にファイル内容を正規表現または文字列そのままで置換するツールです。
sedの構文をすぐ忘れるのと、WindowsとLinuxで同じ感じで使いたくて作っています。

使い方

入力ファイルまたはフォルダを指定して、置換条件を指定する形です。

Usage: rcf -i INPUT [-r REGEX | -s STRING] -t REPLACEMENT [--escape] [--recursive] [-c CHARSET] [-o OUTPUT | --overwrite]

Flags
  -i, --input string         Input file/dir path.
  -r, --regex string         Target regex.
  -s, --string string        Target string.
  -t, --replacement string   Replacement.
  -e, --escape               Enable escape sequence.
  -R, --recursive            Recursively traverse the input dir.
  -c, --charset string       Charset. (default "UTF-8")
  -o, --output string        Output file/dir path.
  -O, --overwrite            Overwrite the input file.
  -h, --help                 Help.

下記の例だと、input.txtを入力ファイルとして、beforeという文字をafterに置き換えて、output.txtというファイルに出力します。

$ rcf -i input.txt -s before -t after -o output.txt

置換対象の指定は、正規表現(-r)と文字列(-s)の2パターンになります。

バイナリファイルに対しても置換できるように、-cで指定するCharsetとしてbinaryというものを用意しています。
binaryを指定すると、ファイル内容をヘキサ文字にしたうえで置換することができます。
ヘキサ文字はx00xFFといったように先頭にxを付けた16進数でバイトを指定します。

$ rcf -i input.txt -s x00x01 -t "" -o output.txt -c binary

その他、詳しい利用方法はREADMEをご参照ください。