I often have to make changes to text files by processing each line, and prefer to do that with Python. This is why I wrote this tool about a year ago, and publish it now in preparation of a blog post on Bash Bunny.
The man page:
Usage: python-per-line.py [options] expression [[@]file ...] Program to evaluate a Python expression for each line in the provided text file(s)Arguments:
@file: process each file listed in the text file specified
wildcards are supportedSource code put in the public domain by Didier Stevens, no Copyright
Use at your own risk
https://DidierStevens.comOptions:
–version show program’s version number and exit
-h, --help show this help message and exit
-m, --man Print manual
-o OUTPUT, --output=OUTPUT
Output to file
-s SCRIPT, --script=SCRIPT
Script with definitions to includeManual:
This program reads lines from the given file(s) or standard input, and
then evaluates the provided Python expression on each line of text and
outputs the result of the Python expression.The Python expression needs to use {} to represent the content of each
line. Before evaluation, {} is replaced by the content of each line
surrounded by single quotes.
The value of the evaluated expression is outputed as a single line,
except when the Pythion expression returns a list. In that case, each
element of the list is outputed on a single line.Example:
Content test.txt:
Line 1
Line 2
Line 3Command:
python-per-line.py “'copy ’ + {}” test.txtOutput:
copy Line 1
copy Line 2
copy Line 3This program contains a predefined Python function to help with the
generation of Rubber Ducky scripts: Duckify.Example:
Content test.txt:
Line 1
Line 2
Line 3Command:
python-per-line.py “Duckify({})” test.txtOutput:
STRING Line 1
ENTER
STRING Line 2
ENTER
STRING Line 3
ENTERThe lines are written to standard output, except when option -o is
used. When option -o is used, the lines are written to the file
specified by option -o.An extra Python script (for example with custom definitions) can be
loaded using option -s.
python-per-line_V0_0_1.zip (https)
MD5: B7C1146D44D6B3F8B04C571E8C205191
SHA256: 6D7931B33F8A1D81539E892897D301145A63502A181B2B89A01466D599D53787
Article Link: https://blog.didierstevens.com/2017/04/23/new-tool-python-per-line/