8f45b40528
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.
74 lines
2.1 KiB
Bash
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
|