No se crea un archivo nuevo mientras se redirige la salida

2

Estoy usando esto para la redirección de salida:

cat filename | grep 'dis' | wc -l > test.txt

Pero no quiero que se cree un archivo de cero bytes si no se encuentra ningún resultado del comando grep.

¿Hay alguna manera de que esto sea posible?

usuario417721
fuente

Respuestas:

1

Esto solo se creará test.txtsi el recuento de líneas no es cero:

grep 'dis' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> test.txt; }
John1024
fuente
0

Debajo hay un AWKsabor.

awk 'BEGIN {lc=0}; /dis/ {lc+=1}; END {if (lc > 0) print lc > "test.txt"}' filename

Esto creará "test.txt" solo si se encuentra al menos una coincidencia.

Kannan Mohan
fuente