Bonjour,
J'aimerai comprendre pourquoi je n' obtiens pas le même résultat
avec une commande SED selon qu'elle est passée directement dans un émulateur de terminal (xfce4-terminal)
ou via certain script ?
Voici un exemple concret :
Prenons un fichier : touch.txt contenant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 TOUCH(1) Commandes TOUCH(1) NOM touch - Modifier l'horodatage d'un fichier SYNOPSIS touch [OPTION] ... FICHIER ... DESCRIPTION Mettre à jour les dates (dates et heures) d'accès et de dernière modi‐ fication de chaque FICHIER selon la date actuelle.
Le but recherché est d'ajouter 2 simples quotes '' au début et à la fin de chaque ligne non-vide
(ceci pour formater ce contenu en "ligne de code" de Zim — https://www.zim-wiki.org )
Dans le terminal :
donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ sed -Ei "s/^(.+)$/''\1''/g" /tmp/touch.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $ cat /tmp/touch.txt ''TOUCH(1) Commandes TOUCH(1)'' ''NOM'' '' touch - Modifier l'horodatage d'un fichier'' ''SYNOPSIS'' '' touch [OPTION] ... FICHIER ...'' ''DESCRIPTION'' '' Mettre à jour les dates (dates et heures) d'accès et de dernière modi‐'' '' fication de chaque FICHIER selon la date actuelle.''
si je place le script : /tmp/script.sh
avec :
cela fonctionne aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash sed -Ei "s/^(.+)$/''\1''/g" /tmp/touch.txt ; exit
Pourtant le script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #!/bin/bash # Script: zim_manpage.sh # Fonction: Formater la seclection du Manuel brut de copier/coller depuis SeeTxt # Notes: S'utilise avec l'argument Zim : %t (texte séléctionné) # rm -Rf /tmp/zim/ ; mkdir /tmp/zim/ ; tempo='/tmp/zim/manpage.txt' ; echo $@ > $tempo ; sed -Ei "s/^(.+)$/''\1''/g" $tempo ; cat $tempo ; exit
Note : Zim possède un mécanisme de remplacement de la sélection du contenu du fichier courant (%t)
par la sortie du script et ça fonctionne bien,
mais le résultat du scriopt est une unique ligne ;
c'est pareil quand je remplace $tempo par le chemin du fichier temporaire /tmp/zim/manpage.txt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ''TOUCH(1) Commandes TOUCH(1) NOM touch - Modifier l'horodatage d'un fichier SYNOPSIS touch [OPTION] ... FICHIER ... DESCRIPTION Mettre à jour les dates (dates et heures) d'accès et de dernière modi‐ fication de chaque FICHIER selon la date actuelle. ''
même en échappant les simples cotes avec : \'
Pourquoi cette différence ?
Comment y remédier ?
Merci
Partager