2010-02-11 22 views
8

tomar el ejemplo:Cómo quitar el nombre del archivo desde el final de la salida du -h

$ du -h file_size.txt 
112K file_size.txt 

cómo iba a quitar el nombre del archivo de la salida del du -h

he tratado de usar sed que buscar una cadena (el nombre del archivo) y sustituirlo por nada, pero que ya no haya trabajado (que a continuación)

du -h file_size.txt | sed 's/ 'file_size.txt'//' 

Podría alguien por favor señalar por qué esto no funcionará, o tal vez una mejor manera de hacerlo?

Saludos

Paul

Respuesta

11

Usted tiene una mala cita en esa línea de comandos. La más sencilla es probablemente:

du -h file_size.txt | cut -f -1 

para fijar su línea de comandos:

du -h file_size.txt | sed 's/file_size.txt//' 

Desde su entrada tiene una etiqueta awk:

du -h file_size.txt | awk '{ print $1 }' 
+2

o 'du -h archivo_tamaño.txt | sed 's/\ s +. * //' ' – Tomalak

+0

@Tomalak tiene la idea correcta para usar 'sed' - sure beats escribiendo el nombre del archivo dos veces. –

+0

Woops, las comillas simples donde un sobrante de mi tienen una $ VARIABLE allí antes. Gracias por la ayuda como siempre – paultop6

9
du -h file_size.txt | cut -f1 
+0

SÍ! ¡Ayudando a la gente tres años después! – Tastybrownies

5

salida simple de la primera columna. Aquí está la solución awk

du -h test.txt | awk '{ print $1 }' 
+0

+++ 1 :-) aus .at – Flavius

0

Esto es un poco más detallado, pero en cualquier caso, se trata de otra manera de lo que quiere:

du -h file_size.txt |while read x junk; do echo $x; done 
0

@OP si sus datos tiene campos distintos, para ejemplos de espacios/pestañas, luego es más fácil usar herramientas como awk/cut para dividirlas en esos campos por delimitadores. El uso de expresiones regulares (por ejemplo, sed) no es necesario. Aún mejor es solo usar el caparazón.

diversas maneras

$ du -h file | awk '{print $1}' 
4.0K 

$ du -h file | cut -f1 
4.0K 

$ set -- $(du -h file) #using shell only 
$ echo $1 
4.0K 
0

el mandato original habrían funcionado excepto que va a incluir un espacio en la expresión regular sed, y du pestañas salidas.

0

la salida de du -h está [tab] delimitada.

du -h file_size.txt |sed 's/[\t].*//g' 
Cuestiones relacionadas