#pattern #replace #substitute #find #cli #command-line #command-line-tool

app findreplace

一个在文件内查找并替换指定模式为替代文本的工具

1 个不稳定版本

0.1.0 2023年5月8日

命令行工具 中排名第 2443

MIT 许可证

15KB
172

FindReplace

FindReplace 是一个命令行工具,允许您在文件内查找并将指定模式替换为替代文本。

安装

要安装 FindReplace,您需要在系统上安装 RustCargo。然后,克隆此仓库并运行 cargo build --release 以构建应用程序。二进制文件将位于 target/release 目录中。

本指南提供了几种在计算机上安装 FindReplace 工具的方法。按照以下步骤进行,使用最适合您的方法设置 FindReplace

方法 1:手动安装

  1. 访问 FindReplace 的 GitHub 页面,导航到“发行版”部分。
  2. 下载适用于您的操作系统的最新发行版,并解压存档内容。
  3. 将解压的二进制文件复制到您的 $PATH 目录中。在 macOS 或 Linux 上,这可能是 /usr/local/bin,而在 Windows 上,您可以将二进制文件复制到 C:\Windows\system32
  4. 通过在终端或命令提示符中运行命令 findreplace --version 来验证 FindReplace 是否正确安装。

方法 2:使用 Cargo

如果您已经在计算机上设置了 Rust 开发环境,您可以使用 cargo install 命令来安装 FindReplace

  1. 打开终端或命令提示符并运行命令 cargo install findreplace
  2. Cargo 将下载、构建和安装 FindReplace 二进制文件。
  3. 二进制文件将被放置在macOS或Linux上的$HOME/.cargo,或者在Windows上的%USERPROFILE%\.cargo\bin
  4. 通过运行命令findreplace --version来验证查找替换是否安装正确。

用法

FindReplace
A tool to find and replace given pattern with substitute inside file.

Syntax:
  findreplace [options]
  findreplace [option] <pattern> <substitute> <file_path>

where,
  pattern      the pattern to search for in the file
  substitute   the text to replace the pattern with or a JSON/YAML/CSON formatted hash-map
  file_path    the path to the file to search and replace in

Options:
  -h --help       Show help menu
  -V --version    Show version info
  -l --log        Show verbose log

Usages:
  findreplace --help
  findreplace --version
  findreplace 'foo' 'bar' file.txt
  findreplace 'hello world' '{"hello":"hi","world":"earth"}' file.txt
  findreplace 'hello world' '{hello: hi, world: earth}' file.txt
  findreplace 'hello world' 'hello:hi;world:earth' file.txt
  findreplace --log 'hello world' 'hello:hi;world:earth' file.txt

Extras:
  findreplace "`\{[a-zA-Z0-9_-]+`\}" '{:(;}:)' file.txt   [PowerShell]
  findreplace '\{[a-zA-Z0-9_-]+\}' '{:(;}:)' file.txt     [Bash]
  findreplace "\{[a-zA-Z0-9_-]+\}" "{:(;}:)" file.txt    [CMD]

JSON与YAML与CSON

JSON(JavaScript对象表示法)、YAML(YAML不是标记语言)和CSON(紧凑符号对象表示法)都是用于存储和交换数据的数据序列化格式。

JSON是一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。它基于JavaScript编程语言的一个子集,通常用于在服务器和Web应用程序之间传输数据。

YAML是一种易于阅读的数据序列化格式,常用于配置文件和在存储或传输数据的应用程序中。它旨在比JSON和其他数据序列化格式更具可读性,并使用缩进来表示数据结构的嵌套。

CSON是YAML的变体,使用简洁的YAML语法定义数据结构。它通过排除分隔符周围的空格、未引用的键和其他方面来努力比JSON或YAML更小,使其更容易编写和阅读。它还允许使用许多特殊字符(符号)作为分隔符,例如;,|/~。虽然可以选择任何可用的符号作为分隔符,但必须在文档中保持一致。不允许组合符号,这可能会导致意外的结果。

每种格式都有其自身的优点和缺点。JSON得到了广泛的支持且易于使用,但由于其严格的语法,可能比YAML或CSON更难阅读。YAML比JSON更易于阅读,但其在某些情况下依赖于缩进可能使其更难以处理。CSON提供了与YAML许多相同的优点,但其使用的紧凑符号语法可能使不熟悉该语言的开发者难以访问。

最终,这些格式之间的选择将取决于您的具体需求和偏好。JSON对于Web应用程序或其他需要互操作性的情况是一个不错的选择。YAML或CSON可能更适合配置文件或其他以可读性为重要性的情况。但对于这个工具,CSON由于其紧凑的大小和在终端中输入时没有开销,是最好的选择,而其他格式则需要在其中使用转义字符。

工作逻辑

process_file函数接受三个参数:file_pathsubstitutepattern。它检查给定file_path的文件是否存在,然后读取其内容。然后它尝试将substitute字符串解析为JSON、YAML或CSON,并调用相应的search_and_replace_with_map函数以替换文件的内容。如果substitute字符串不能解析为这些格式中的任何一种,它将回退到调用带有原样substitute字符串的search_and_replace函数。

构建

要构建FindReplace CLI应用程序,请按照以下步骤操作

  1. 通过运行以下命令从GitHub克隆FindReplace存储库
git clone https://github.com/isurfer21/FindReplace.git
  1. 通过运行以下命令导航到克隆的存储库
cd FindReplace
  1. 通过运行以下命令使用Cargo构建项目
cargo build

运行这些命令后,您应该拥有一个本地副本的 FindReplace 项目,可以立即使用。

可执行二进制文件位于 .\target\debug\ 目录中。在 Windows 上,二进制文件名为 findreplace.exe,而在 macOS 上则简单地命名为 findreplace

发布

要将 FindReplacecrate 发布到 crates.io,请运行以下命令

cargo publish

这将把crate上传到 crates.io,以便其他人可以轻松下载和使用。

依赖项

~4–5.5MB
~104K SLoC