Existe-t-il un script / programme / utilitaire déjà disponible pour l'exigence suivante de manière optimisée?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
text-processing
grep
tee
balki
la source
la source
awk
mais à quel moment évalue->
t- il le ? Si elle est évaluée à chaque fois que le conditionnel s'applique, vous vous retrouvez avec deux fichiers d'une ligne ...>
imprime toutes les sorties dans le fichier, écrasant les fichiers existants. Il n'est pas évalué de manière à ce que toutes les nouvelles lignes écrasent l'ancienne sortie de la même instance deawk
. Autrement dit, s'il existe plusieurs correspondances, le fichier "correspondance" contiendra chaque correspondance séparée parOFS
. La différence entre>
et>>
existe dans le traitement des fichiers existants.Voici un
sed
exemple:Remarque: la
w
commande de sed écrasera un fichier existant à chaque exécution du script, mais uniquement si cette commande d'écriture particulière est déclenchée; d'où lerm
la source
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Vous pouvez ajouter des fichiers dans awk:
ou plus court:
la source