Skip to main content
https://img.shields.io/pypi/v/pysed.svg https://travis-ci.org/dslackw/pysed.svg?branch=master https://landscape.io/github/dslackw/pysed/master/landscape.png https://img.shields.io/codacy/5ef917a8c6354d8f9d984183c8fb5847.svg https://img.shields.io/pypi/dm/pysed.svg https://img.shields.io/badge/license-GPLv3-blue.svg https://img.shields.io/github/stars/dslackw/pysed.svg https://img.shields.io/github/forks/dslackw/pysed.svg https://img.shields.io/github/issues/dslackw/pysed.svg

About

Pysed is a stream editor, is used to perform basic text transformations from a file or from pipeline. It reads text, line by line, from a file and replace, insert or print all text or specific area.

Installation

$ pip install pysed --upgrade

uninstall

$ pip uninstall pysed

Command Line Tool Usage

Usage: pysed [OPTION] {patt} {repl} {lines/max/flag} [[input-file], --write]

pysed is utility that parses and transforms text

Optional arguments:
  -h, --help            Print this help message and exit
  -v, --version         Print program version and exit
  -r, --replace         Search and replace text
  -f, --findall         Find all from pattern in text
  -s, --search          Search for the first matching
  -m, --match           Pattern matching in the beginning
  -l, --lines           Search pattern and print lines
  -g, --highlight       Highlight and print text
  -t, --stat            Print text statistics
      --write           Write changes to file

Regex flags

Syntax

Python syntax, Meaning

I or IGNORECASE

re.IGNORECASE, ignore case.

M or MULTILINE

re.MULTILINE, make begin/end {^, $} consider each line.

S or DOTALL

re.DOTALL, make . match newline too.

U or UNICODE

re.UNICODE, make {w, W, b, B} follow Unicode rules.

L or LOCALE

re.LOCALE, make {w, W, b, B} follow locale.

X or VERBOSE

re.VERBOSE, allow comment in regex.

Usage Examples

$ cat text.txt
This is my cat,
 whose name is Betty.
This is my dog,
 whose name is Frank.
This is my fish,
 whose name is George.
This is my goat,
 whose name is Adam.

Replace text:

$ pysed -r "name" "surname" text.txt
This is my cat,
 whose surname is Betty.
This is my dog,
 whose surname is Frank.
This is my fish,
 whose surname is George.
This is my goat,
 whose surname is Adam.

Replace text in specific lines:

$ pysed -r "name" "surname" 2,4 text.txt
This is my cat,
 whose surname is Betty.
This is my dog,
 whose surname is Frank.
This is my fish,
 whose name is George.
This is my goat,
 whose name is Adam.

Replace text in specific lines and max:

$ pysed -r "is" "IS" 1,7/1 text.txt
ThIS is my cat,
 whose surname is Betty.
This is my dog,
 whose surname is Frank.
This is my fish,
 whose name is George.
ThIS is my goat,
 whose name is Adam.

Add character to the beginning of each line:

$ pysed -r "^" "# " text.txt
# This is my cat,
#  whose name is Betty.
# This is my dog,
#  whose name is Frank.
# This is my fish,
#  whose name is George.
# This is my goat,
#  whose name is Adam.

Add character to the end of each line:

$ pysed -r "$" " #" text.txt
This is my cat, #
 whose name is Betty. #
This is my dog, #
 whose name is Frank. #
This is my fish, #
 whose name is George. #
This is my goat, #
 whose name is Adam. #

Find all matching pattern:

$ pysed -f "name " text.txt
name name name name

Find all matching pattern in specific lines:

$ pysed -f "name " "" 2,4 text.txt
name name

Search and print lines:

$ pysed -l "name" text.txt
- This is my cat,
2  whose name is Betty.
- This is my dog,
4  whose name is Frank.
- This is my fish,
6  whose name is George.
- This is my goat,
8  whose name is Adam.

Highlight text:

$ pysed -g "name" "red" text.txt
This is my cat,
 whose name is Betty.
This is my dog,
 whose name is Frank.
This is my fish,
 whose name is George.
This is my goat,
 whose name is Adam.

Print statics text:

$ pysed -t text.txt
Lines: 8, Words: 32, Chars: 125, Blanks: 27

Use the argument "--write" in any case when you want to save the changes:

$ pysed -r "name" "surname" text.txt --write


Use as piping:

$ echo "This is my cat, whose name is Betty" | pysed -r "cat" "dog"
This is my dog, whose name is Betty

$ repl="fish"
$ echo "This is my cat, whose name is Betty" | pysed -r "cat" $repl
This is my fish, whose name is Betty

$ echo "This is my cat, whose name is Betty" | pysed -r "[^\W]+" "-"
- - - -, - - - -

$ echo "This is my cat, whose name is Betty" | pysed -r "is" "IS" 1/1
ThIS is my cat, whose name is Betty

$ echo "910a13de57dfbdf6f06675db975f8407" | pysed -r "[^\d+]"
91013576066759758407

$ echo "910a13de57dfbdf6f06675db975f8407" | pysed -f "\d+"
910 13 57 6 06675 975 8407

$ echo "910a13de57dfbdf6f06675db975f8407" | pysed -s "\d+"
910

$ echo "910a13de57dfbdf6f06675db975f8407" | pysed -s "(\d+)(\w+)" "" 0/1
910

$ echo "910a13de57dfbdf6f06675db975f8407" | pysed -s "(\d+)(\w+)" "" 0/2
a13de57dfbdf6f06675db975f8407

$ echo "The temperature today is at +12 degrees Celsius" | pysed -s ".\d+"
+12

$ echo "/usr/local/bin" | pysed -r "/local" ""
/usr/bin

$ echo "/usr/local/bin" | pysed -r "/LoCal" "" //IGNORECASE
/usr/bin

Use with command "find". You can use "find" and "pysed" commands in combination to find
and replace text in multiple files. For example:

$ find . -name *.py -exec pysed -r "lefttext" "righttext" {} --write \;

this command finds 'lefttext' string in all python files and replace it with 'righttext'.

Please report Issues

Release files for pysed 0.7.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pysed 0.7.8
File Size Uploaded Provenance
pysed-0.7.8.tar.gz 22.8 kB Without provenance Details

Release files / pysed-0.7.8.tar.gz

Download URL pysed-0.7.8.tar.gz
Size 22.8 kB
Tags Source
SHA-256 checksum
How to use checksums
41e926114bdea0380c63d814573e931c494226b060749a0fd6211f88b9126b5e
BLAKE2b-256 checksum
How to use checksums
d1ef685dd52f3ab79a459f89ca115b0dd902db32e46f3d58e72e0e5017de762e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for pysed 0.7.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.7.8 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page