Files
fn_registry/bash/functions/shell/convert_text_case.sh
T
egutierrez 8f45b40528 feat: add bash shell utility functions
12 funciones Bash del dominio shell: utilidades de scripting (bash_log,
bash_colors, bash_check_deps, bash_confirm, bash_handle_error, bash_safe_run),
manipulacion de texto (convert_text_case), estructura de proyectos
(create_project_structure), y operaciones git (git_clean_branches,
git_log_visual, git_push_all_remotes, git_repo_status). Cada una con su
.sh y .md de frontmatter.
2026-04-12 13:54:15 +02:00

74 lines
2.1 KiB
Bash

#!/usr/bin/env bash
# convert_text_case
# -----------------
# Convierte el contenido de texto de un archivo aplicando transformaciones:
# upper (mayúsculas), lower (minúsculas), lf (normalizar saltos a LF),
# crlf (normalizar saltos a CRLF).
#
# USO:
# source convert_text_case.sh
# convert_text_case mode file [output_file]
#
# ARGUMENTOS:
# mode Transformación a aplicar: upper|lower|lf|crlf (requerido)
# file Archivo de entrada (requerido)
# output_file Archivo de salida (opcional; por defecto imprime a stdout)
convert_text_case() {
local mode="${1:-}"
local input_file="${2:-}"
local output_file="${3:-}"
# Validar argumentos requeridos
if [[ -z "$mode" ]]; then
echo "convert_text_case: modo requerido (upper|lower|lf|crlf)" >&2
return 1
fi
if [[ -z "$input_file" ]]; then
echo "convert_text_case: archivo de entrada requerido" >&2
return 1
fi
if [[ ! -f "$input_file" ]]; then
echo "convert_text_case: archivo no encontrado: ${input_file}" >&2
return 1
fi
# Función auxiliar que aplica la conversión y escribe a stdout o archivo
_apply_conversion() {
local src="$1"
local op="$2"
case "$op" in
upper)
awk '{ print toupper($0) }' "$src"
;;
lower)
awk '{ print tolower($0) }' "$src"
;;
lf)
sed 's/\r$//' "$src"
;;
crlf)
sed 's/\r$//' "$src" | sed 's/$/\r/'
;;
*)
echo "convert_text_case: modo no soportado: ${op}. Usa: upper|lower|lf|crlf" >&2
return 1
;;
esac
}
if [[ -n "$output_file" ]]; then
_apply_conversion "$input_file" "$mode" > "$output_file"
echo "convert_text_case: ${input_file}${output_file} (modo: ${mode})"
else
_apply_conversion "$input_file" "$mode"
fi
}
# Ejecutar si se invoca directamente
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
convert_text_case "$@"
fi