¿Hay un script / programa / utilidad ya disponible para el siguiente requisito de manera optimizada?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
text-processing
grep
tee
balki
fuente
fuente
awk
pero ¿en qué punto evalúa el>
? Si se evalúa cada vez se aplica el condicional, que acabaría con dos archivos de una sola línea ...>
imprime todos los resultados en el archivo, sobrescribiendo los archivos existentes. No se evalúa de tal manera que dará como resultado que las líneas nuevas sobrescriban la salida anterior de la misma instancia deawk
. Es decir, si hay varias coincidencias, el archivo "coincidencia" contendrá cada coincidencia separada porOFS
. La diferencia entre>
y>>
existe en el tratamiento de archivos existentes.Aquí hay un
sed
ejemplo:Nota: el
w
comando de sed sobrescribirá un archivo existente cada vez que se ejecute el script, pero solo si se activa ese comando de escritura en particular; por lo tanto, larm
fuente
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Puede agregar archivos en awk:
o más corto:
fuente