Synsh: A Shell Pipeline Synthesizer
Synsh (synsh.dev) is a tool that automatically creates shell pipelines from examples. Given an example of the input to the pipeline and the expected output, Synsh attempts to find a pipeline that transforms the input into the output.
For example, given the following input:
Tina, Bassist, Coronado David, Singer, Dumbarton Chris, Drummer, Fort Campbell Jerry, Guitarist, Milwaukee
and the following example output:
Bassist: Tina Drummer: Chris Guitarist: Jerry Singer: David
Synsh outputs the following pipeline, with comments explaining each command:
# 1. Select fields 1 and 2 in order 2 and 1, separated by ", ". # 2. Sort lines by alphanumeric value, by field 1. # 3. Replace "," by ":". awk -F ', ' 'BEGIN { OFS = ", " } { print $2, $1 }' | \ sort -k 1,1 | \ tr , ':'
Usage
To create a shell pipeline with Synsh, enter the pipeline’s input in the “Input” field and enter the desired output in the “Output” field. Synsh automatically searches as you type; there is no need to explicitly trigger a search.
About
Synsh was written by Pat Rondon. All feedback and questions are welcome at pat.rondon@gmail.com.
Thanks to Evan Rose for feedback on an earlier version of Synsh.