75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
						|
 | 
						|
TOOLS=(doinplacef doinplacex)
 | 
						|
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
 | 
						|
    # créer les liens
 | 
						|
    scriptname="$(basename "$0")"
 | 
						|
    for tool in "${TOOLS[@]}"; do
 | 
						|
        ln -s "$scriptname" "$tool"
 | 
						|
    done
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
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 COMMAND [ARGS...]
 | 
						|
 | 
						|
Si on utilise une commande avec des options, penser à utliser '--' pour séparer
 | 
						|
les options de ce script des options de la commande
 | 
						|
 | 
						|
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
 | 
						|
    -p, --evalp
 | 
						|
        Evaluer la commande avec evalp(), ce qui permet de chainer plusieurs
 | 
						|
        commandes en les séparant par //. Cette option est automatiquement
 | 
						|
        activée si ce script est lancé avec le nom doinplacex
 | 
						|
    -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.
 | 
						|
        Cette option est automatiquement activée si ce script est lancé avec le
 | 
						|
        nom doinplacef"
 | 
						|
}
 | 
						|
 | 
						|
function nl2lf() { _nl2lf; }
 | 
						|
function nl2crlf() { _nl2crlf; }
 | 
						|
function nl2cr() { _nl2cr; }
 | 
						|
function latin1compat() { _latin1compat; }
 | 
						|
function noaccents() { _noaccents; }
 | 
						|
 | 
						|
[ "$scriptname" == doinplacex ] && evalp=1 || evalp=
 | 
						|
[ "$scriptname" == doinplacef ] && replace=1 || replace=
 | 
						|
args=(
 | 
						|
    --help '$exit_with display_help'
 | 
						|
    -p,--evalp evalp=1
 | 
						|
    -g,--ignore-error,--replace-always replace=1
 | 
						|
)
 | 
						|
parse_args "$@"; set -- "${args[@]}"
 | 
						|
 | 
						|
file="$1"; shift
 | 
						|
if [ -n "$evalp" ]; then
 | 
						|
    if [ -n "$replace" ]; then
 | 
						|
        doinplacef "$file" evalp "$@"
 | 
						|
    else
 | 
						|
        doinplace "$file" evalp "$@"
 | 
						|
    fi
 | 
						|
else
 | 
						|
    if [ -n "$replace" ]; then
 | 
						|
        doinplacef "$file" "$@"
 | 
						|
    else
 | 
						|
        doinplace "$file" "$@"
 | 
						|
    fi
 | 
						|
fi
 | 
						|
exit $?
 |