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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$ sed -Ei "s/^(.+)$/''\1''/g" /tmp/touch.txt
donne :
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 :

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
cela fonctionne aussi.


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