From 324459bb364827301c1228307d426327b95110d9 Mon Sep 17 00:00:00 2001 From: urban Date: Tue, 21 Oct 2025 11:10:42 +0200 Subject: [PATCH] Delete count_words.sh.save --- count_words.sh.save | 182 -------------------------------------------- 1 file changed, 182 deletions(-) delete mode 100755 count_words.sh.save diff --git a/count_words.sh.save b/count_words.sh.save deleted file mode 100755 index a8ef521..0000000 --- a/count_words.sh.save +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env bash -set -uo pipefail -# count_words.sh — Räknar underscore-separerade ord i filnamn -# Version: 1.3.0 - -VERSION="1.3.1" - -# Usage: -# ./count_words.sh [katalog] [--to-file] [--ext "mp4,avi,mkv"] [--version] -# -# Exempel: -# ./count_words.sh . -# ./count_words.sh /path --to-file -# ./count_words.sh /path --ext "mp4,avi" --to-file -# ./count_words.sh --version - -DIR="." -TO_FILE=false -OUTFILE="reserved__words.txt" -EXTS=("mp4") # default - -print_help() { - cat <&2 - print_help - exit 1 - ;; - esac -done - -# Bygg lookup för tillåtna ändelser (lowercase) -declare -A ALLOWED_EXT=() -for e in "${EXTS[@]}"; do - [[ -n "$e" ]] || continue - ALLOWED_EXT["${e,,}"]=1 -done - -declare -A counts=() - -shopt -s nullglob -for f in "$DIR"/*; do - [[ -f "$f" ]] || continue - name=$(basename "$f") - - # Filtrera på tillåtna ändelser - ext="${name##*.}" - if [[ "$name" == "$ext" ]]; then - continue # ingen ändelse - fi - ext_lc="${ext,,}" - [[ ${ALLOWED_EXT[$ext_lc]+_} ]] || continue - - # Ta bort ändelsen - base="${name%.*}" - - # TA BORT WUNF-PREFIX: [WUNF] eller [WUNF_ddd] var som helst i namnet - # (behåll allt annat) - base_noprefix=$(sed -E 's/\[WUNF(_[0-9]{3})?\]//g' <<< "$base") - - # Splitta på '_' och räkna (case-insensitive) - oldIFS=$IFS - IFS='_' - read -r -a parts <<< "$base_noprefix" - IFS=$oldIFS - - for word in "${parts[@]}"; do - # Trimma whitespace - w="$word" - w="${w#"${w%%[![:space:]]*}"}" # trim left - w="${w%"${w##*[![:space:]]}"}" # trim right - [[ -n "$w" ]] || continue - - # Normalisera till lowercase - w_lc="${w,,}" - - # Initiera och öka - : "${counts[$w_lc]:=0}" - (( counts[$w_lc]++ )) - done -done - -# Samla ord med förekomst > 2 -results=() -for w in "${!counts[@]}"; do - if (( counts[$w] > 2 )); then - results+=("${counts[$w]} $w") - fi -done - -# Ingen träff? -if [[ ${#results[@]} -eq 0 ]]; then - if $TO_FILE; then - if [[ -f "$OUTFILE" ]]; then - echo "Inga nya ord (>2) hittades. Filen lämnades oförändrad. (v$VERSION)" - else - : > "$OUTFILE" - echo "Inga ord (>2) hittades. Tom fil skapad: $OUTFILE (v$VERSION)" - fi - else - echo "Inga ord förekom mer än två gånger. (v$VERSION)" - fi - exit 0 -fi - -# Sortera: primärt på antal (fallande), sekundärt på ord (stigande) -sorted_lines=$(printf "%s\n" "${results[@]}" | sort -nrk1,1 -k2,2) - -if $TO_FILE; then - # Nya ord (lowercase redan), en per rad - new_words=$(printf "%s\n" "$sorted_lines" | awk '{print $2}') - - # Läs befintliga ord från OUTFILE (om den finns) och bygg union utan dubbletter - declare -A uniq=() - if [[ -f "$OUTFILE" ]]; then - # Tolka både kommatecken och whitespace som separerare - while IFS= read -r tok; do - w="$tok" - # trim - w="${w#"${w%%[![:space:]]*}"}" - w="${w%"${w##*[![:space:]]}"}" - [[ -n "$w" ]] || continue - uniq["${w,,}"]=1 - done < <(tr -s ',[:space:]' '\n' < "$OUTFILE") - fi - - # Lägg till nya ord - while IFS= read -r nw; do - [[ -n "$nw" ]] || continue - uniq["$nw"]=1 - done <<< "$new_words" - - # Bygg kommaseparerad sträng (alfabetiskt för determinism) - all_words=$(printf "%s\n" "${!uniq[@]}" | sort -u | paste -sd, -) - - # Skriv tillbaka hela unionen (utan dubbletter) - echo "$all_words" > "$OUTFILE" - echo "Resultat uppdaterat i $OUTFILE (v$VERSION)" -else - echo "Ord som förekommit mer än två gånger (sorterat högst->lägst) — v$VERSION:" - while read -r count word; do - echo "$word ($count ggr)" - done <<< "$sorted_lines" -fi