#!/usr/bin/env bash function replace-listings(){ sed -i -e 's/end{lstlisting}/end{sexylisting}/g' $1 for fn in `grep 'begin{lstlisting}' $1`; do caption=$(grep -m 1 -B 1 -P 'begin{lstlisting}' $1 | grep -oP 'caption={\K[^\}]+') sed -i "0,/begin{lstlisting}/ s/{lstlisting}/{sexylisting}{$caption}/" $1 done } replace-listings $1 exit 0