Skip to main content

CLI utility that parses and transforms text

Project description

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] {pattern} {repl} {lines/max/flag} [input-file]

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" 0/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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

pysed-0.7.6.zip (30.1 kB view details)

Uploaded Source

pysed-0.7.6.tar.gz (22.7 kB view details)

Uploaded Source

File details

Details for the file pysed-0.7.6.zip.

File metadata

  • Download URL: pysed-0.7.6.zip
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pysed-0.7.6.zip
Algorithm Hash digest
SHA256 ab2fe84f6e4ed9f4de870afb256aef6d06e03284db126bf43df5cb531324842d
MD5 42f14ec732668dc375604a39f5cb8871
BLAKE2b-256 354e9494cd69d2068c4e6ac0af77525fcdbbdf78d063a7981aa92973c9c2e000

See more details on using hashes here.

File details

Details for the file pysed-0.7.6.tar.gz.

File metadata

  • Download URL: pysed-0.7.6.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pysed-0.7.6.tar.gz
Algorithm Hash digest
SHA256 b75da22ed5f161fe4d62456c33fa5d800946445b2f9eebba44eea7a41ade8a5e
MD5 5578433ceab5ec4bbfe21b222c499ba5
BLAKE2b-256 cf34e13310addb75d691a8e2920f8660966639346aeb55b2aedf82e13f82cf95

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page