GNU/Linux >> Tutoriels Linux >  >> Linux

Canaliser vers plusieurs fichiers dans le shell ?

J'ai une application qui produira une grande quantité de données que je ne souhaite pas stocker sur le disque. L'application produit principalement des données que je ne souhaite pas utiliser, mais un ensemble d'informations utiles qui doivent être divisées en fichiers séparés. Par exemple, étant donné la sortie suivante :

JUNK
JUNK
JUNK
JUNK
A 1
JUNK
B 5
C 1
JUNK

Je pourrais exécuter l'application trois fois comme ceci :

./app | grep A > A.out
./app | grep B > B.out
./app | grep C > C.out

Cela m'obtiendrait ce que je veux, mais cela prendrait trop de temps. Je ne veux pas non plus vider toutes les sorties dans un seul fichier et les analyser.

Existe-t-il un moyen de combiner les trois opérations présentées ci-dessus de manière à ce que je n'aie besoin d'exécuter l'application qu'une seule fois et que j'obtienne toujours trois fichiers de sortie distincts ?

Réponse acceptée :

Si vous avez

./app | tee >(grep A > A.out) >(grep B > B.out) >(grep C > C.out) > /dev/null

(d'ici)

(à propos de la substitution de processus)


Linux
  1. Grep Word dans un fichier puis copier le fichier ?

  2. Grep :Mémoire épuisée ?

  3. Grep pour plusieurs chaînes dans des fichiers, puis répertorier les fichiers dans l'ordre de taille ?

  4. Dd :plusieurs fichiers d'entrée ?

  5. Comment répertorier un type spécifique de fichiers dans des répertoires récursifs en shell ?

Pouvoir au peuple

Qu'est-ce que le Shell sous Linux ?

Sortie de canal à utiliser comme spécification de recherche pour grep sous Linux

Recherche d'une chaîne dans plusieurs fichiers sous Linux

Comment puis-je boucler sur la sortie d'une commande shell ?

Comment renommer des fichiers avec des espaces à l'aide du shell Linux ?