nutools/doinplace

49 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire base
function display_help() {
uecho "$scriptname: filtrer en place un fichier à travers une suite de commandes
USAGE
$scriptname FILE COMMANDS...
Une ou plusieurs commandes peuvent être spécifiées, séparées par //
Si on utilise des commandes avec des options, penser à utliser '--' pour séparer
les options de ce script des options des commandes
En plus des commandes systèmes, il est possible d'utiliser toute fonction de
nutools qui effectue des traitement sur un flux comme stripnl, filter_empty,
merge_contlines, filter_comment, filter_conf, etc. Les fonctions nl2lf, nl2crlf,
nl2cr, latin1compat et noaccents sont aussi disponibles par convenance.
OPTIONS
-g, --ignore-error, --replace-always
Normalement, le fichier n'est pas remplacé si la commande retourne une
erreur. Avec cette option, le fichier est remplacé quel que soit le code
de retour de la commande. A utiliser par exemple avec des commandes
comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif."
}
function nl2lf() { _nl2lf; }
function nl2crlf() { _nl2crlf; }
function nl2cr() { _nl2cr; }
function latin1compat() { _latin1compat; }
function noaccents() { _noaccents; }
replace=
args=(
--help '$exit_with display_help'
-g,--ignore-error,--replace-always replace=1
)
parse_args "$@"; set -- "${args[@]}"
file="$1"; shift
if [ -n "$replace" ]; then
doinplacef "$file" evalp "$@"
else
doinplace "$file" evalp "$@"
fi
exit $?