Tengo una lista de archivos.txt, a continuación:
-rw-rw-r-- 1 root dev 11 May 16 12:18 20_SumActive.txt
-rw-rw-r-- 1 root dev 11 May 16 12:18 22_SumActive.txt
-rw-rw-r-- 1 root dev 7 May 16 12:18 24_SumActive.txt
-rw-rw-r-- 1 root dev 0 May 16 12:18 26_SumActive.txt
-rw-rw-r-- 1 root dev 0 May 16 12:18 28_SumActive.txt
Salida:
kpgmeddev01> cat 2[0-8]_SumActive.txt
Sum: 47760
Sum: 72000
Sum: 0
Cómo obtener la salida de la siguiente manera:
Sum: 47760
Sum: 72000
Sum: 0
[Blank]
[Blank]
Necesita orientación
command-line
solaris
Pocos
fuente
fuente
[Blank]
¿te referías a esos 7 caracteres o pretendías indicar una línea vacía?Respuestas:
cat
no puede generar datos que no existan en los archivos. Si un archivo está vacío, ni siquiera tiene un carácter de nueva línea para proporcionar una línea vacía como salida.Puede asegurarse de que los archivos contengan al menos un solo carácter de nueva línea.
Así es como usa GNU
awk
para asegurarse de que (esto modifica los archivos vacíos):El
ENDFILE
bloque se ejecutará después de terminar de leer cualquiera de los archivos. SiFNR
es cero, nunca vimos ninguna línea en el archivo, por lo que insertamos una nueva línea en él. El script continúa con el siguiente archivo.Luego puede usar
cat
como lo hizo en la pregunta.Alternativamente, sin cambiar los archivos, usando GNU en
awk
lugar decat
:Esto hace el mismo tipo de detección de archivos vacíos que el anterior, pero imprime la nueva línea en la salida estándar en lugar de en el archivo. Al
1
final podría reemplazarse{ print }
y provocará que se generen todos los datos en los archivos no vacíos.Alternativamente, un bucle de shell (debería funcionar en cualquier shell POSIX):
La
-s
prueba será verdadera si el archivo existe y tiene un tamaño mayor que cero.Si desea que la cadena literal
[Blank]
se genere para archivos vacíos, simplemente inserte esa cadena delante de\n
las llamadasprintf
anteriores (esto también funcionará en elawk
código).fuente
Con
perl
Lo que agrega un carácter de nueva línea si falta al final, por lo que generaría una línea vacía para los archivos vacíos, pero también agregaría una nueva línea para los archivos no vacíos que faltan (y terminaría concatenado en una sola línea con
cat
).fuente
(Esto no es exactamente lo que pides, pero :) En este tipo de situaciones prefiero usar
head
Normalmente esto es lo que quieres. Si no, es fácil
sed
hacerlo más tarde.fuente
Con
xargs
ygrep
podrías probar algo como:fuente
Asumiendo que con
[Blank]
las líneas en blanco literales, esto debería funcionar:fuente
Puede probar cada archivo para ver si tiene longitud cero antes de intentar mostrar su contenido:
Lo he usado en
awk 1 "$f"
lugar decat "$f"
porqueawk
garantiza terminar la salida de un archivo con una nueva línea.En su pregunta, si pretendía que
[blank]
no debería ser un literal, sino solo una línea en blanco, puede implementar esto utilizando el código anterior y eliminarlo'[Blank]'
al final de laecho
declaración.fuente
Supongo que sus archivos 26_SumActive.txt y 28_SumActive.txt están vacíos y necesita líneas en blanco al mostrar su contenido
Para esto, puede iterar a través de su lista de archivos y clasificar su contenido, y si el archivo está vacío, repita la línea en blanco.
[ -s FILE ]
Verdadero si existe ARCHIVO y tiene un tamaño mayor que cero.fuente
if [ -s $i ]; then cat $i; else echo -e ""; fi;
. Todavía +1 para una prueba simple usando solo la funcionalidad de shell estándar.cat "$i"; test -s "$i" || echo
, no hay necesidad de esas banderas difíciles de manejarif
o no portátilesecho
.donde : permitirá que cat lea desde la entrada estándar.
Entonces, después de mostrar el contenido de sus archivos, cat esperará su entrada. Puede hacer su entrada deseada, presionando enter para espacios en blanco literales o [En blanco] si es lo que desea. Después de cada entrada, presione enter, una vez que se hayan hecho todas las entradas, presione ^ D (Ctrl + D) y listo.
PD: para cada entrada obtendrá la salida correspondiente.
Con esto, puede poner espacios en blanco o cualquier otra cosa que desee, entre dos secuencias de salidas.
fuente
cat
una solución y permitir que el OP le proporcione lo que desea.