[bash] Problème pour enchaînement de commandes

Résolu
Bonjour à toutes et à tous,

Je suis débutante en programmation je m'excuse d'avance si la question s'avère naïve...

J'ai pour but de nettoyer un certain nombre de fichiers .txt, je voulais donc enlever tous les espaces et tabulation de début de lignes, ensuite enlever toutes les lignes commençant par des +#* après tout ça, enlever les lignes en double dans l'ensemble du fichier.

J'ai réussi à faire quelque chose comme ça:

 sed 's/[ \t]*//' toto.txt > toto2.txt | sed '/^#|*|+/d' toto2.txt > toto3.txt | awk '!a[$0]++' toto3.txt > toto4.txt 

mais je me dis qu'il doit bien y avoir la possibilité d'enchaîner les commandes sans créer 2 fichier en plus ?!

Alors j'ai tenté ça :
 sed 's/[ \t]*//' | sed '/^#|*|+/d' | awk '!a[$0]++' toto.txt > toto2.txt 

ainsi que d'autre variantes (avec ; ou &&) , et ça ne donne rien...

Donc je sais pas si je cafouille, et où est-ce que je cafouille...

En vous remerciant d'avance pour votre aide! Bonne journée!

2 réponses

  1. Salut,

    sed 's/^[ \t]*//;/^\(#\|*\|+\)/d' toto.txt | awk '!a[$0]++' > toto2.txt
    1. aaaahhhhhhh !! merci !!
      ça fonctionne très bien sans passer par 46 000 fichiers!
      Merci!!
  2. Modérateur
    cat data.txt
    TAB
    ##Comment
    +Hello
    *pointer


    sed -e 's/^[#\+\*\t]\+//' data.txt 
    TAB
    Comment
    Hello
    pointer


    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    1. Contributeur
      Salut,

      Ce n'est pas ce qui est demandé ;-\

      je voulais donc enlever tous les espaces et tabulation de début de lignes,
      Ça c'est bon ;-)

      ensuite enlever toutes les lignes commençant par des +#*
      Ça ce n'est pas bon ;-(