diff --git a/doinplace b/doinplace new file mode 100755 index 0000000..3703206 --- /dev/null +++ b/doinplace @@ -0,0 +1,48 @@ +#!/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 $?