#!/bin/bash # Copyright (C) 2016 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. teeu() { local help="Usage: teeu [-h|--help] FILE [LINE] Append LINE if it's not already in FILE If no LINE is specified, process each line from STDIN. teeu is short for tee unique. -h|--help display this message" if [[ $1 == --help || $1 == -h ]]; then echo "$help" return fi if (( ${#@} == 0 )) ; then echo "teeu error: need 1 or more arguments" echo "$help" return 1 fi local MAPFILE (( ${#@} >= 2 )) && MAPFILE="${@:2}" || mapfile -t for line in "${MAPFILE[@]}"; do grep -xFq "$line" "$1" &>/dev/null || tee -a "$1" <<<"$line" done return 0 } teeu "$@"