Detecter absence de balise shell linux

DOVO -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je code actuellement un petit programme shell, celui ci ouvre un fichier .txt et détecte la présence de balise en début de ligne, exemple de balise:
"T "
"C "
"H " ....
Je souhaiterai pouvoir detecter l'absence de balise dans mon programme:
exemple:
contenu dans le fichier .txt
"je suis bloqué dans mon programme"
Il faudrait convertir cette lligne en:
"<p>je suis bloqué dans mon programme</p>"

Aidez moi svp!!!!
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    T'aurais pu dire que ça marchait la solution sur l'ancienne conversation ;-) : http://www.commentcamarche.net/forum/affich 11665640 remplacer balises shell?#3

    De plus, la solution est la même :
    s#(.*)#<p>\1</p>#

    Sinon, je ne vois pas le lien entre tes balises T, C, H et ton exemple ?
    1
    1. DOVO
       
      Merci pour ton aide précieuse.
      Pour les balises "T ", "C "....en fait je souhaite rajouter une balise lorsque je renconctre ces motifs en début de ligne et seulement si il n'y a pas de balise spécifique je souhaite rajouter une balise <p>

      par exemple:
      si j'ai dans mon fichier.txt:
      "H comment ca marche
      bonjour voici le corps du programme

      T GRAND titre 1
      slidglisrg sdkf
      "
      je souhaite obtenir le fichier suivant
      <title>comment ca marche</title>
      <p>bonjour voici le corps du programme</p>
      <h1>GRAND titre 1</h1>
      <p>slidglisrg sdkf </p>

      J'ai vraiment beaucoup de mal avec les sed... voila la commande que j'ai tappé:

      cat fichier_de_donnees.txt | sed #(.*)#<p>\1</p>#>>fichier_de_donnees.xml

      et voila le message d'erreur renvoyé:


      Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

      -n, --quiet, --silent
      suppress automatic printing of pattern space
      -e script, --expression=script
      add the script to the commands to be executed
      -f script-file, --file=script-file
      add the contents of script-file to the commands to be executed
      --help display this help and exit
      -V, --version output version information and exit

      If no -e, --expression, -f, or --file option is given, then the first
      non-option argument is taken as the sed script to interpret. All
      remaining arguments are names of input files; if no input files are
      specified, then the standard input is read.

      E-mail bug reports to: bug-gnu-utils@gnu.org .
      Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
      0
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    cat fichier_de_donnees.txt | sed #(.*)#<p>\1</p>#>>fichier_de_donnees.xml
    Tu as oublié le s devant le #.

    Sinon, tu peux utiliser :
    cat fichier_de_donnees.txt | sed -r 
    's#T (.*)#<title>\1</title># ; tn;
    s#S (.*)#<h1>\1</head># ;tn; 
    s#.*#<p>&</p>#
    :n'
    

    Attention, il faut que les paragraphes n'aient pas de \n, sinon cela mettra un <p></p> autour de chaque ligne.
    Si cela te gène, le script est modifiable ;-)).
    0