#!/usr/bin/bash # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # what: remove a comment from a single line, in a config file # author: klevstul # started: mar 2021 # # requires: n/a # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if [ "$EUID" -eq 0 ] then echo "error: do not run as 'root'" exit fi this_file_name=`basename "$0"` if [ $# -ne 4 ]; then echo "usage: '$this_file_name [{add, remove}] [COMMENT_CHARACTER] [PATTERN] [CONFIG_FILE]'" exit 1 fi operation=$1 comment_character=$2 pattern=$3 config_file=$4 # https://stackoverflow.com/questions/24889346/how-to-uncomment-a-line-that-contains-a-specific-string-using-sed # add comment character (comment out) if [ $operation == "add" ]; then sed -i "/$pattern/s/^$comment_character*/$comment_character/g" $config_file fi # remove comment character (uncomment) if [ $operation == "remove" ]; then sed -i "/$pattern/s/^$comment_character*//g" $config_file fi