Skip to content

Instantly share code, notes, and snippets.

@DrSnowbird
Created July 11, 2018 19:53
Show Gist options
  • Save DrSnowbird/d8f1af3092fc389a21d987f9ca32147d to your computer and use it in GitHub Desktop.
Save DrSnowbird/d8f1af3092fc389a21d987f9ca32147d to your computer and use it in GitHub Desktop.
#!/bin/bash -x
if [ $# -lt 3 ]; then
echo "ERROR: --- Usage: $0 <config_file> <key> <value> [<delimiter>] [<prefix-pattern>]"
echo "e.g."
echo './replaceKeyValue.sh \"elasticsearch.yml\" \"^network.host\" \"172.20.1.92\" \":\" \"# network\" '
exit 1
fi
CONFIG_FILE=${1}
TARGET_KEY=${2}
REPLACEMENT_VALUE=${3}
DELIMITER_TOKEN=${4:-:}
PREFIX_PATTERN=${5:-}
if [ ! -f "$CONFIG_FILE" ]; then
echo "*** ERROR $CONFIG_FILE: Not found!"
exit 1
fi
if grep -q "${TARGET_KEY} *${DELIMITER_TOKEN}" ${CONFIG_FILE}; then
#sudo sed -c -i "s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE
sudo sed -c -i "s/\(${TARGET_KEY} *${DELIMITER_TOKEN} *\).*/\1${REPLACEMENT_VALUE}/" ${CONFIG_FILE}
else
if [ "$PREFIX_PATTERN" == "" ]; then
#echo "$TARGET_KEY= $REPLACEMENT_VALUE" | sudo tee -a $CONFIG_FILE
echo "${TARGET_KEY}${DELIMITER_TOKEN} ${REPLACEMENT_VALUE}" | sudo tee -a ${CONFIG_FILE}
else
sudo sed -i "/${PREFIX_PATTERN}/a \
${TARGET_KEY}${DELIMITER_TOKEN} ${REPLACEMENT_VALUE}" ${CONFIG_FILE}
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment