|
|
|
|
Posté par
momsse, le mercredi 9 mai 2007 à 12:41:55Configuration: Mac OS X Safari 419.3
Votre script devra également prendre en compte des intervalles de lignes via la notation numéro-début-ligne |
L'ennoncé entier est ici :
http://momsse.free.fr/exo.rtf Je ne sais pas pourquoi ca me tronque la moitié ... |
Utilise la commande sed : sed '1,10d' efface les 10 premières lignes, à partir de là. A toi de changer l'argument de sed pour l'adapter à tes besoins |
Salut,
Le seul problème qui persiste est au niveau d'un paramètre matchant une ligne n'existant pas (en dehors des lignes de départ existantes) et qui génére donc une erreur 6 (dernier cas du "case ... esac"). Donc à régler... #! /bin/bash
# enlever-des-lignes.sh
# Déclaration fonction d'usage
fonction_usage ()
{
echo -e "\tUsage : $0 [n|n-n]\n"
echo -e "\tn est un entier positif."
echo -e "\tn-n est un intervalle (eg. 6-15)"
echo -e "\tLes entiers seront séparés par un espace.\n\
Les intervalles n-n séparés par un tiret \"-\".\n"
}
# Test existence fichier
if [ ! -e "$1" ]; then
echo -e "Le fichier $1 n'existe pas ! \n"
fonction_usage
exit 2
fi
# Test nombre de paramètres
if [ "$#" -lt 2 ]; then
echo -e "Nombre de paramètres incorrects ! \n\n"
fonction_usage
exit 3
fi
# Test entier positif et/ou mauvais intervalle
for n in "$@"; do
case "$n" in
-* ) echo -e "Les entiers doivent être de type positif !\n"
fonction_usage
exit 4
;;
*-* ) var1=$(echo $n | cut -d- -f1)
var2=$(echo $n | cut -d- -f2)
if [ "$var1" -gt "$var2" ]; then
echo -e "Erreur dans l'intervalle \"$n\"\n"
fonction_usage
exit 5
fi
;;
[0-9]*[!-][0-9]* ) echo -e "Le caractère séparateur d'intervalle n'est pas un tiret !\n"
fonction_usage
exit 6
;;
esac
done
##### Début du script #####
# Initialisation variable fichier (pour libérer le paramètres $1)
fichier=$1
# Décalage des paramètres
shift
# Initialisation des paramètres en passant par :
#+ substitution espace par saut de ligne
#++ tri numérique
#+++ substitution saut de ligne par espace et
#++++ substitution tiret par virgule
set $(echo "$@" | sed 's/ /\n/g'| sort -n | sed -e :a -e '$!N;s/\n/ /;ta' -e 's/-/,/g')
# Initialisatieon compteur
n=1
# Initialisation variable "cmd" (sed)
cmd="sed "
# Boucle tant que compteur inférieur au nombre de paramètres
while [ "$n" -le "$#" ]
do
# On rajoute à la variable "cmd" le reste de la commande sed
cmd="$cmd-e ''\$$n'd' "
# On incrémente le compteur
n=$(expr $n + 1)
done
# On exécute la commande (cmd) qui doit ressembler pour 4 paramètres initiaux à :
#+ sed -e ''$1'd ' -e ''$2'd ' -e ''$3'd ' $fichier
eval $cmd $fichier
;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Salut !
J'ai pas compris : if [ ! -e "$1" ] dans le test d'existence du fichier. que veut dire le " -e"? Je veux également savoir quand est-ce qu'on utilise l'eval 10x |
| 15/05 16h39 | outils en ligne | Référencement |
| 18/11 15h14 | Exécuter un script shell | Shell |
| 05/01 18h57 | Sed - Supprimer une ou plusieurs lignes d'un fichier | Sed |
| 29/12 20h42 | Guide d'utilisation du Shell pour débutant | Shell |
| 17/11 11h21 | [Shell] Tester une variable numérique | Shell |
| 27/04 11h58 | [Shell-script] suppresion lignes identiques | 3 |
| 06/06 09h21 | [Shell-script] supprimer partie de texte | 4 |
| 31/01 01h54 | Exercice sur shell-script | 1 |
| 04/12 14h01 | [Shell Unix] supprimer début ligne | 2 |
![]() | SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des... | Catégorie: Telnet/SSH Licence: Open Source |
![]() | Support IPX pour Vista - Le protocole IPX/SPX sert à de nombreux anciens jeux pour pouvoir jouer en réseau (Red Alert, Command & Conquer, etc.). ... | Catégorie: Librairies (DLL) Licence: Freeware/gratuit |
![]() | All In One Video Script - All In One Video Script est un script pour l'extension GreaseMonkey pour le navigateur Firefox permettant de détecter la... | Catégorie: Vidéo Licence: Freeware/gratuit |
![]() | ShellEnhancer - ShellEnchancer est un programme d'amélioration des fonctions de base de Windows. Il rend les interfaces plus stables et plus... | Catégorie: Personnalisation Licence: Freeware/gratuit |
![]() | M and M's Shell | Catégorie: Jeu Playstation | 4.99 € PriceMinister |
![]() | Shellshock: Nam 67 | Catégorie: Jeu vidéo Xbox | 9.99 € PriceMinister |
![]() | Supportplus SPLS7056 2.0 | Catégorie: Enceintes PC | 32.90 € PriceMinister |
![]() | Medal Of Honor : | Catégorie: Jeu vidéo PS2 | 7.48 € Surcouf |