#1 Le 16/05/2011, à 22:34
- elkev
remplacement quelquechose par quelquechose+caractère
Bonsoir!
Je vous donne l'énoncé d'un exercice que j'ai à faire :
Écrivez un script colonnes.sh qui admet quatre paramètres : un nom de fichier ordinaire,
un caractère et deux entiers n1 et n2 tels que le premier soit inférieur ou égal au second. Le
caractère sert de délimiteur entre les colonnes du fichier. Le rôle de ce script est d’afficher, sur la
sortie standard, les colonnes du fichier dont le numéro est compris entre n1 et n2 . Si les paramètres
ne sont pas conformes, vous afficherez un message d’erreur.
Bon, si j'ai bien compris, on me demande de produire un truc qui affiche les colonnes de n1 à n2 dans fichier, et d'ajouter le caractère choisi entre les colonnes sortantes;
j'ai produit ça, dont on peut se passer des premières lignes:
#! /bin/zsh
########
if [[ $3 -gt $4 ]] then echo "erreur. Le troisième paramètre doit être plus petit que le dernier"
elif [[ $#1 = 0 ]] then echo "erreur. Choisis un fichier"
elif [[ ! -e $1 ]] then echo "erreur. Le fichier doit exister"
elif [[ $#2 = 0 ]] then echo "erreur. Choisis un délimiteur!"
elif [[ $#3 = 0 ]] || [[ $#4 = 0 ]] then echo "erreur. Il faut choisir des numéros de colonne!"
else
########
cut -c $3-$4 $1 | sed -e "s/[*]/[*]$2/g"
fi
bon. mon problème est que dans la sortie , j'obtiens
ubuntu% colonnes.sh colonnes.sh ::: 3 6
/bi
####
[[
if [
if [
if [
if [
se
####
t -c
ce qui me conviendrait si on avait remplace l'occurence de * par *$2
j'ai également essayé avec . ? etc... je ne vois pas comment faire!
merci d'avance!
Hors ligne
#2 Le 16/05/2011, à 23:09
- Watael
Re : remplacement quelquechose par quelquechose+caractère
Le caractère sert de délimiteur entre les colonnes du fichier.
cut -f $3-$4 -d "$2" "$1"
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 16/05/2011, à 23:12
- Postmortem
Re : remplacement quelquechose par quelquechose+caractère
Salut,
Dans ton exercice, moi je comprends plutôt que le 2ème paramètre doit être ce qui va servir à délimiter les colonnes dans le fichier de départ.
Après, je vérifierais le nombre de paramètres, si le fichier existe, si les paramètres 3 et 4 sont biens des nombres et que le paramètre 3 est inférieur au 4.
Pour afficher les colonnes 3 à 5 d'un fichier, le délimiteur de colonne étant le caractère # :
cut -d '#' -f 3-5 mon_fichier.txt
Sinon, je pense que t'as une erreur dès le début : #! /bin/zsh est à remplacer par #!/bin/zsh (sinon, moi pas connaître zsh !)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne