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

CLI utility that parses and transforms text written in Python.

Pysed is a Python stream editor, is used to perform basic text transformations from a file. It reads text, line by line, from a file and replace, insert or print all text or specific area. Actually pysed is a passage of Python module ‘re’ in terminal.

Read more for Regular Expression Syntax

[CHANGELOG]

Installation

$ pip install pysed --upgrade

uninstall

$ pip uninstall pysed

Command Line Tool Usage

pysed is utility that parses and transforms text

Usage: pysed [OPTION] {pattern} {repl} {max} {flag} [input-file]

Options:
  -h, --help                   display this help 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
  -s, --stat                   print text statistics
      --write                  write changes to file

Python 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.

Maximum replace text:

$ pysed -r "name" "surname" 2 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 "^" "# " 0 M 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 "$" " # " 0 M 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

Search and print lines:

$ pysed -l "name" text.txt
 whose name is Betty.
 whose name is Frank.
 whose name is George.
 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
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+)" "" 1
910

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

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

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 Distribution

pysed-0.6.0.tar.gz (22.2 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for pysed-0.6.0.tar.gz
Algorithm Hash digest
SHA256 f494d555e3b76dabf00c50a2f307953e00825e301317a73a7d21302ac94e86af
MD5 e1fc41a903244688cf87555635d3f3da
BLAKE2b-256 78e99146d301eed090979866279b9e5e82a00a0a9ff5bebe79d476f439b2f3c6

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