Bonjour,
pourriez vous me dire svp que fait cette ligne , je n'arrive pas à comprendre comment ça fonctionne !!
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's;$FILE;'$TRAVAIL/${TFILE}_xxx.s1';g' $1 > $1_sed
Bonjour,
pourriez vous me dire svp que fait cette ligne , je n'arrive pas à comprendre comment ça fonctionne !!
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's;$FILE;'$TRAVAIL/${TFILE}_xxx.s1';g' $1 > $1_sed
Bonjour,
Voici la traduction mot à mot:
Le premier paramètre est probablement le premier argument du script dans lequel se trouve cette commande.Pour toutes les lignes de la cible, il faut substituer $FILE par le contenu de $TRAVAIL suivi de '/' suivi du contenu de $TFILE suivi de _xxx.s1, pour toutes les occurrences de $FILE, la cible étant le premier paramètre et la sortie étant redirigée vers un fichier dont le nom est le premier paramètre allongé de '_sed'.
[chipotage]
C'est presque parfait!
Il suffit juste de substituer "remplacer" à "substituer" (ou de remplacer "substituer" par "remplacer"):
ou bien de substituer "substituer à" à "substituer" et "" à "par":
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pour toutes les lignes de la cible, il faut remplacer $FILE par le contenu de $TRAVAIL suivi de '/' suivi du contenu de $TFILE suivi de _xxx.s1,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pour toutes les lignes de la cible, il faut substituer à $FILEparle contenu de $TRAVAIL suivi de '/' suivi du contenu de $TFILE suivi de _xxx.s1,
[/chipotage]
Oui mais alors, vaut-il mieux substituer "remplacer" à "substituer", échanger "substituer" avec "échanger", ou remplacer "échanger" par "remplacer" ?
[surchipotage]
En français, il y a un espace avant et après le point d'exclamation ou les deux points. On cause pas angliche, ici.
C'est presque parfait !
Il suffit juste de substituer "remplacer" à "substituer" (ou de remplacer "substituer" par "remplacer") :
ou bien de substituer "substituer à" à "substituer" et "" à "par" :
[/surchipotage]
Salut,
[sursurchipotage]
En français, il y a une espace avant et après le point d'exclamation ou les deux points.Envoyé par Flodelarab
Dans ce contexte précis espace est féminin voir ici.
[/sursurchipotage]
Pour moi , ça $FILE c'est une variable qui référence à un nom de fichier
Celui là $TRAVAIL/${TFILE}_xxx.s1 est un fichier avec son chemin
Ce que je ne comprends pas , est ce que dans cette commande on a considéré que le contenu de $TRAVAIL/${TFILE}_xxx.s1 n'est pas vide ? parceque dans dans mon script je ne vois pas la commande qui l'alimente.
MERCI
Une version plus lisible et un peu plus robuste de cette commande:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed "s;$FILE;$TRAVAIL/${TFILE}_xxx.s1;g" $1 > $1_sed
j'ai ça avant ma ligne :
set temporary option Temp_Extract_Column_Delimiter = ';'
set temporary option Temp_Extract_Name1 = '$FILE' ( Elle sert à quoi cette ligne ? )
/Ma requête/
Je ne vois pas pourquoi on va remplacer par le contenu de $TRAVAIL/${TFILE}_xxx.s1 alors qu'il est vide pour moi !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 touch $TRAVAIL/${TFILE}_xxx.s1 if [ $? -ne 0 ] then exit 1 fi chmod 777 $TRAVAIL/${TFILE}_xxx.s1 sed 's;$FILE;'$TRAVAIL/${TFILE}_xxx.s1';g' $1 > $1_sed
Attention ! Cette commande n'a pas le même sens. Ici, $FILE est interprété et remplacé par son contenu alors que dans la commande originale, $FILE reste $FILE à cause des quotes - et non double quotes -.
Déjà, si tu mets du code, mets le dans une balise code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 set temporary option Temp_Extract_Column_Delimiter = ';' set temporary option Temp_Extract_Name1 = '$FILE' ( Elle sert à quoi cette ligne ? ) /Ma requête/ touch $TRAVAIL/${TFILE}_xxx.s1 if [ $? -ne 0 ] then exit 1 fi chmod 777 $TRAVAIL/${TFILE}_xxx.s1 sed 's;$FILE;'$TRAVAIL/${TFILE}_xxx.s1';g' $1 > $1_sed
Ensuite, j'ai du mal avec le fait que ce texte commence par du SQL et continue avec du bash... N'y a-t-il pas confusion ?
Non y a pas de confusion , on utilise bien du SQL à l'intérieur des scripts pour extraire des fichiers de données.
Est ce que je peux comprendre qu'on renomme le premier fichier par le deuxième et le contenu du premier va être déplacé vers le contenu du deuxième fichier ?
Pourquoi postes-tu ce sujet ? Est-ce que c'est un script qui marche et que tu veux comprendre ? Ou est-ce un script qui ne marche pas ?
Quel est ton système ? La version de ton interpréteur de commandes ?
Pour répondre à ta dernière question, aucun contenu de fichier ne sera remplacé. Au mieux, un fichier sera dupliqué et modifié.
D'accord. Tu réponds à la première partie de mes questions.Envoyé par rosyfulla
Quel est ton système/ordinateur/plateforme ?
Quel est la version de ton interpréteur de commandes ?
Non, la commande que je propose est équivalente mais plus robuste car elle gère le cas ou l'une des variables contient un[e] espace. Elle est aussi plus lisible, la preuve en est que tu l'a mal comprise.
Regarde la ligne de commande originale de plus près, les variables sont en dehors des simple quotes.
La commande que tu proposes est très honorable et probablement ce que voulait faire son auteur.
Mais je cite le début du message #1 :les variables sont en dehors des simple quotes.
Qu'est-ce qui est entre simple quote ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's;$FILE;'$TRAVAIL(...)
$FILE
Vos deux commandes n'ont donc pas le même sens.
"OTAN" pour moi, tu as raison, $FILE n'est pas une variable mais un marqueur (pas très inspiré) dans le fichier à traiter, c'est moi qui me suis fait piéger par cette pseudo variable :
Rectification donc pour ma suggestion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed "s;\$FILE;$TRAVAIL/${TFILE}_xxx.s1;g" $1 > $1_sed
[sursursurchipotage]
Exact, "espace" est féminin dans ce contexte, mais il me semblait plutôt que c'était une espace fine insécable (parfois appelée "demi-espace")!!! (voir ici)
Or (et non "hors", pliz) j'ai horreur de voir qu'une longue ligne terminée par une espace (sécable, parce qu'on n'a pas facilement accès à une espace insécable) suivie d'un point d'exclamation rejette ledit point d'exclamation à la ligne suivante!
Donc, comme beaucoup d'environnements ne permettent pas facilement d'insérer une espace fine insécable, je préfère carrément ne pas du tout mettre d'espace! Na!
(un peu comme les angliches et les canadiens)
[/sursursurchipotage]
Bonjour,
Je ne connaissais pas le terme de "demi-espace". L'espace fine étant selon les choix ou les polices de caractères entre un quart et un cinquième de cadratin qui correspond à la valeur de la lettre M dans la police utilisée.Envoyé par jack-ft
Dans ce cas, il est communément admis d'utiliser l'espace insécable en lieu et place de l'espace fine.Envoyé par jack-ft
Donc, si j'ai bien compris, l'ordre des choix est:
- espace fine insécable
- espace insécable
- espace sécable (normale (le 32, quoi!)) ou pas d'espace
Par exemple, dans ce forum, comme je ne sais pas mettre d'espace fine insécable, ni d'espace insécable, je choisis de ne pas mettre d'espace du tout, pour éviter d'avoir des points d'exclamation rejetés en début de ligne!
Bonsoir,
C'est cela en effet.
Le HTML ne gère pas les espaces fines et insécables (d'après mes connaissances en la matière) ce qui pose un problème pour qui souhaite avoir un rendu fin des document qu'il produit sur le net.
Mais indépendamment des problèmes de ponctuation, il y a un autre souci plus gênant pour les alphabets latin qui est l'habitude de ne pas mettre de majuscules accentuées. Cette mauvaise habitude peut conduire à des contresens, en plus de contrevenir aux règles typographiques de la langue.
UN LION TUE ou UN LION TUÉ ne signifie pas du tout la même chose.
Et bien, ce n'est pas vrai. Je vous laisse tester ce code en envoyant le fichier html dans un onglet de votre navigateur et en redimensionnant la fenêtre:
Vous êtes mignons, mais vous avez noyé la discussion originale. J'aurais voulu savoir d'où venait cette bouillie infecte, mélange de SQL et bash dont je doute qu'elle existe telle quelle en étant fonctionnelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <html> <head> </head> <body> cette phrase contient de nombreux espaces insécables que l'on peut tester en redimensionnant la fenêtre du navigateur </body></html>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager