En copiant les lignes ci-dessous dans remplace.sh:
#!/bin/sh
a_remplacer=""
while read data; do
fin=`echo $data | grep '^"[^#]*","Machin"'`
if [ -n "$fin" ] ; then
# Fin du traitement car "Machin" trouvé
a_remplacer=""
echo "$data"
else
if [ -n "$a_remplacer" ] ; then
# Ligne dans laquelle il faut remplacer "" par "truc"
ligne=`echo $data | sed 's/^\("[^"]*",\)\("[^"]*"\)\(.*\)/1円"truc"3円/'`
echo "$ligne"
else
recherche=`echo $data | grep '^"[^"]*","truc"'`
if [ -n "$recherche" ] ; then
# A partir de maintenant il faut remplacer "" par "truc"
a_remplacer="OUI"
fi
echo "$data"
fi
fi
done
et ensuite: ./remplace.sh < fichier_data > fichier_ok
fichier_data = le fichier contenant les données à traiter
fichier_ok = le fichier contenant les données traitées
Après un rapide test et si j'ai bien compris ça semble à peu près faire ce que tu veux, mais bon .. à tester !
# A tester !
Posté par sylvain cresto (site web personnel) . En réponse au message Bash, sed , awk ?. Évalué à 3.
#!/bin/sh
a_remplacer=""
while read data; do
fin=`echo $data | grep '^"[^#]*","Machin"'`
if [ -n "$fin" ] ; then
# Fin du traitement car "Machin" trouvé
a_remplacer=""
echo "$data"
else
if [ -n "$a_remplacer" ] ; then
# Ligne dans laquelle il faut remplacer "" par "truc"
ligne=`echo $data | sed 's/^\("[^"]*",\)\("[^"]*"\)\(.*\)/1円"truc"3円/'`
echo "$ligne"
else
recherche=`echo $data | grep '^"[^"]*","truc"'`
if [ -n "$recherche" ] ; then
# A partir de maintenant il faut remplacer "" par "truc"
a_remplacer="OUI"
fi
echo "$data"
fi
fi
done
et ensuite:
./remplace.sh < fichier_data > fichier_ok
fichier_data = le fichier contenant les données à traiter
fichier_ok = le fichier contenant les données traitées
Après un rapide test et si j'ai bien compris ça semble à peu près faire ce que tu veux, mais bon .. à tester !