#!/usr/bin/env bash default_rules=( 's/[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}//g' 's/\b[a-zA-Z0-9._-]\+\.[a-zA-Z]\{2,\}\b//g' 's/\b[A-Za-z0-9+\/=]\{20,\}\b//g' 's/\(password=\)\S\+/\1/g' ) rules=() while [[ $1 =~ ^s/ ]]; do rules+=("$1") shift done [[ ${#rules[@]} -eq 0 ]] && rules=("${default_rules[@]}") sed_expr=() for r in "${rules[@]}"; do sed_expr+=( -e "$r" ) done # If files are passed, process them to stdout. # If none, read from stdin to stdout. if [[ $# -gt 0 ]]; then sed "${sed_expr[@]}" "$@" else sed "${sed_expr[@]}" fi