Skip to content

uutils/sed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crates.io Discord License dependency status

CodeCov

sed

Rust reimplementation of the sed utility with some GNU sed, FreeBSD sed, and other extensions.

Status

It is currently work in progress!

Installation

Ensure you have Rust installed on your system. You can install Rust through rustup.

Clone the repository and build the project using Cargo:

git clone https://github.com/uutils/sed.git
cd sed
cargo build --release
cargo run --release

Extensions and incompatibilities

Supported GNU extensions

  • Command-line arguments can be specified in long (--) form.
  • Spaces can precede a regular expression modifier.
  • I can be used in as a synonym for the i (case insensitive) substitution flag.
  • In addition to \n, other escape sequences (octal, hex, C) are supported in the strings of the y command. Under POSIX these yield undefined behavior.

Supported BSD and GNU extensions

  • The second address in a range can be specified as a relative address with +N.

New extensions

  • Unicode characters can be specified in regular expression pattern, replacement and transliteration sequences using \uXXXX or \UXXXXXXXX sequences.

Incompatibilities

  • The input is assumed to be valid UTF-8 (this includes 7-bit ASCII). If the input is in another code page, consider converting it through UTF-8 in order to avoid errors on invalid UTF-8 sequences and for the correct handling of regular expressions. This sed program can also handle arbitrary byte sequences if no part of the input is treated as string.
  • The command will report an error and fail if duplicate labels are found in the script. This matches the BSD behavior. The GNU version accepts duplicate labels.
  • The last line ($) address is interpreted as the last non-empty line of the last file. If files specified in subsequent arguments until the last one are empty, then the last line condition will never be triggered. This behavior is consistent with the original implementation.
  • Labels are parsed for alphanumeric characters. The BSD version parses them until the end of the line, preventing ; to be used as a separator.

License

sed is licensed under the MIT License - see the LICENSE file for details

About

Rewrite of sed in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •