Mientras jugaba con awkvine a ejecutar:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Esto está dando salida como:
53277-rw-------
52347-rw-------
¿Cómo puedo obtener un espacio entre estos dos amigos de salida?
command-line
text-processing
awk
rɑːdʒɑ
fuente
fuente

ls. Esto te morderá en la espalda tarde o temprano.print $5 $1awk {'print $5 $1'} a.txt). Están preguntando cómo poner un espacio entre el campo # 1 y el campo # 5.Respuestas:
Solo cambia la línea a
Esto debería imprimir la salida con espacios.
Espero que esto ayude.
Editar:
Según lo sugerido por McNisse , puede usar printf, que le proporcionaría un buen formato de salida
fuente
printffunción proporciona un mejor control, especialmente si desea formatear números.printf("%s\t%s\n", $5, $1)5ssignifica enawk {'printf ("%5s\t%s\n", $5, $1)'}Otra técnica específica de awk, usa el "separador de campo de salida"
La coma es crucial aquí.
fuente
$1ir a nueva líneaUna forma sencilla de obtener pestañas es:
fuente
Sé que este es un hilo viejo, pero estoy aprendiendo y encontré útiles estas publicaciones. Mi mejor solución fue usar gawk para insertar espacios entre las variables para usted.
fuente
gawk,mawko cualquier otroawk, todos insertan espacios si usa la coma, que es lo que dice esta respuesta .ls -la | awk '{print $1, $9}'. Como dijo muru,gawkno es necesario.Para colocar el espacio entre los argumentos, simplemente agregue
" ", por ejemploawk {'print $5" "$1'}.Sin embargo, no se recomienda analizar la salida del
lscomando , ya que no es confiable y la salida es para humanos, no para scripts. Por lo tanto, use comandos alternativos comofindostat.Aquí hay un ejemplo usando GNU
stat:que imprimirá una salida amigable para la máquina (en forma concisa), para que pueda obtener exactamente lo que necesita. Luego, use
-cpara usar un formato específico, o useawk,cutoreadpara obtener las columnas correctas.Consulte
stat --helppara más opciones. Por ejemplo, para imprimir el día de la modificación, consulte este ejemplo .fuente
for i in ls; do $i).