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 supported Source code put in the public domain by Didier Stevens, no Copyright Use at your own risk https://DidierStevens.com Options: --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 include Manual: 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 3 Command: python-per-line.py "'copy ' + {}" test.txt Output: copy Line 1 copy Line 2 copy Line 3 This 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 3 Command: python-per-line.py "Duckify({})" test.txt Output: STRING Line 1 ENTER STRING Line 2 ENTER STRING Line 3 ENTER The 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