https://github.com/xotic750/replace-x
Command line search and replace utility.
https://github.com/xotic750/replace-x
cli files javascript nodejs replace search sed
Last synced: 6 months ago
JSON representation
Command line search and replace utility.
- Host: GitHub
- URL: https://github.com/xotic750/replace-x
- Owner: Xotic750
- License: mit
- Created: 2017-03-26T18:01:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T07:56:16.000Z (almost 3 years ago)
- Last Synced: 2025-04-30T20:09:47.571Z (6 months ago)
- Topics: cli, files, javascript, nodejs, replace, search, sed
- Language: JavaScript
- Size: 3.86 MB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# replace-x
`replace-x` is a command line utility for performing in place search-and-replace on files. It's similar to sed but there are a few differences:
- Modifies files when matches are found
- Recursive search on directories with -r
- Uses [JavaScript syntax](https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions#Using_Simple_Patterns) for regular expressions and [replacement strings](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter).
- Uses [XRegExp](http://xregexp.com/) to provide augmented (and extensible) JavaScript regular expressions.# Install
With [node.js](http://nodejs.org/) and [npm](http://github.com/isaacs/npm):
npm install replace-x -g
You can now use `replace-x` and `search-x` from the command line.
## Examples
Replace all occurrences of "foo" with "bar" in files in the current directory:
```
replace-x 'foo' 'bar' *
```Replace in all files in a recursive search of the current directory:
```
replace-x 'foo' 'bar' . -r
```Replace-x only in test/file1.js and test/file2.js:
```
replace-x 'foo' 'bar' test/file1.js test/file2.js
```Replace-x all word pairs with "\_" in middle with a "-":
```
replace-x '(\w+)_(\w+)' '$1-$2' *
```Replace only in files with names matching \*.js:
```
replace-x 'foo' 'bar' . -r --include="*.js"
```Don't replace in files with names matching _.min.js and _.py:
```
replace-x 'foo' 'bar' . -r --exclude="*.min.js,*.py"
```Preview the replacements without modifying any files:
```
replace-x 'foo' 'bar' . -r --preview
```See all the options:
```
replace-x -h
```## Search
There's also a `search-x` command. It's like `grep`, but with `replace-x`'s syntax.
```
search-x "setTimeout" . -r
```## Programmatic Usage
You can use replace from your JS program:
```javascript
import replace from 'replace-x';replace({
regex: 'foo',
replacement: 'bar',
paths: ['.'],
recursive: true,
silent: true,
});
```## More Details
### Excludes
By default, `replace-x` and `search-x` will exclude files (binaries, images, etc) that match patterns in the `"defaultignore"` located in this directory.
### On huge directories
If `replace-x` is taking too long on a large directory, try turning on the quiet flag with `-q`, only including the necessary file types with `--include` or limiting the lines shown in a preview with `-n`.
## Limitations
### Line length
By default, `replace-x` works on files with lines of 400 characters or less. If you need to work on long lines, gnu `sed` supports unlimited line length.
### Symbolic links
By default, `replace-x` does not traverse symbolic links for files in directories.
## What it looks like
