X-Git-Url: https://iankelling.org/git/?p=tee-unique;a=blobdiff_plain;f=teeu;fp=teeu;h=4d9c6a0bed8d91508770759ab4b7f3fe933e2716;hp=fbeecadb12d360bb0da0789c2bacc2ecf09baa8e;hb=ed30fdba58a865c2a2d7132348a6521b87d809c5;hpb=0b5f4f6e46815c7977ac3a82ce95bdd2232b8951 diff --git a/teeu b/teeu index fbeecad..4d9c6a0 100755 --- a/teeu +++ b/teeu @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (C) 2016 Ian Kelling +# Copyright (C) 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ # limitations under the License. teeu() { - local help="Usage: teeu [-h|--help] FILE [LINE] + 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. @@ -22,21 +22,27 @@ 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 + 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 + file="$1" + shift + local MAPFILE + if [[ $1 ]]; then + MAPFILE=("$*") + else + mapfile -t + fi + for line in "${MAPFILE[@]}"; do + grep -xFq "$line" "$file" &>/dev/null || tee -a "$file" <<<"$line" + done + return 0 } teeu "$@"