CLI utility that parses and transforms text
Project description
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
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} {lines/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.
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
2 whose name is Betty.
4 whose name is Frank.
6 whose name is George.
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
Please report Issues
Copyright
Copyright © Dimitris Zlatanidis
Linux is a Registered Trademark of Linus Torvalds.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pysed-0.7.0.tar.gz
.
File metadata
- Download URL: pysed-0.7.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a873a5d8ca7e4bbd4f884a00c1781e5b942f1c73e59b58420a076a6260bdafc |
|
MD5 | 4e35ba3f4c976d5d6234c35cfe9ad5be |
|
BLAKE2b-256 | a1f31fa859b31ef73eb18c00ca2ec49a60dcdec671188167e1a563a9e8b88df9 |