2008-10-27 23 views
8

¿Cómo trunco ​​la salida en BASH?truncar la salida en BASH

Por ejemplo, si "du file.name" ¿cómo obtengo el valor numérico y nada más?

después adición:
todas las soluciones funcionan perfectamente. Elegí aceptar la respuesta de "corte" más iluminada porque prefiero el enfoque más simple en los archivos bash que se supone que otros pueden leer.

Respuesta

11

si sabes lo que los delimitadores se cortan entonces es su amigo

du | cut -f1 

Corte por defecto delimitadores de tabulación por lo que en este caso va a seleccionar el primer campo.

Puede cambiar los delimitadores: cut -d '' usaría un espacio como delimitador. (De Tomalak)

También puede seleccionar posiciones de caracteres individuales o rangos:

ls | cut -c1-2 
+2

Puede agregar algo como "cut -d '' -f 1-2", para señalar cómo cambiar los caracteres de corte utiliza como delimitadores. – Tomalak

6
du | cut -f 1 
+0

me golpeó por 20 segundos :) – Ken

+0

Bate por 30 segundos :) He eliminado mi respuesta duplicada y he agregado una respuesta alternativa. –

+0

Preferiría más información sobre delimitadores y rangos ya que solo usaba du como ejemplo. Entonces, felizmente también lo borraré :) – Ken

10

te recomiendo cortar, como otros han dicho. Sin embargo, otra alternativa que a veces es útil porque permite que cualquier espacio en blanco como separadores, es usar awk:

du file.name | awk '{print $1}' 
+0

+1 Si el delimitador podría ser cualquier espacio en blanco, entonces awk es la solución más robusta (incluso si no es tan bonita como usar corte). –

1

Si lo que desea es el número de bytes de un solo archivo, utilice el operador -s.

SIZE=-s file.name 

Eso le da un número diferente de du, pero no estoy seguro de cómo es exactamente lo que está utilizando esto.

Esto tiene la ventaja de no tener que ejecutar du, y tener bash obtener el tamaño del archivo directamente.

Es difícil responder preguntas como esta al vacío, porque no sabemos cómo va a utilizar los datos. Saber eso podría sugerir una respuesta completamente diferente.

+0

En la pregunta original, dijo que usar du era solo un ejemplo; su respuesta no ayuda con su pregunta (aunque de hecho puede serle útil si su ejemplo no fue solo hipotético) –

+0

No lo leo como "du was just a example". –

+0

¿Cómo trunco ​​la salida en BASH? Por ejemplo, si "du file.name" ... – Ken