Obtenha o nome do sistema de arquivos e o uso com 'df -h'

6
 df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//'

Saída:

/test
/test/drv0
/test/drv1
 df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//'

Saída:

10
20
15

Eu quero saber como posso juntar essas saídas assim:

/test 10
/test/drv0 20
/test/drv1 15

Alguém pode me ajudar?

    
por sharkguto 26.09.2013 / 22:27

5 respostas

10
df -P | sed -n '/test/s/.*[[:blank:]]\(.*\)%[[:blank:]]*\(.*\)/ /p'

(que supõe que os caminhos do ponto de montagem não contêm% ou caracteres de nova linha)

    
por 26.09.2013 / 22:36
8

Eu penso algo como segue. Eu não entendo a questão toda embora

df -h | awk '/test/{print $1" "$5}' | sed -e ':a;N;$!ba;s/\n/ /g' -e 's/%//g'

Como a pergunta mudou, aqui está a resposta atualizada

df -h | awk '/test/{print $1, +$5}'
    
por 26.09.2013 / 22:34
6
df | awk '/test/ {print $1 " " $5}'

imprimirá

/test 10%
/test/drv0 20%
/test/drv1 15%
    
por 26.09.2013 / 22:34
4

Eu usaria a função int() no awk que removeria % e o importante seria -P flag para df , porque se a partição no LVM também for impressa corretamente.

df -hP | awk '/test/{print $1,int($5)}'
    
por 27.09.2013 / 00:24
4

Esta não é uma boa solução para sua situação particular (funciona, mas é desnecessariamente complexa), você deve usar as respostas já fornecidas. Eu só queria mencionar outra ferramenta que é muito útil quando você quer juntar a saída de múltiplos programas, paste :

DESCRIPTION
   Write  lines  consisting  of  the sequentially corresponding lines from
   each FILE, separated by TABs, to standard output.   With  no  FILE,  or
   when FILE is -, read standard input.

Combinado com substituição de processos do bash, você pode combinar a saída de seus dois comandos como :

$ paste  <(df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//') \
       <(df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//')
 /test 10
 /test/drv0 20
 /test/drv1 15

Ou, para usar um exemplo mais simples:

$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")
a   1
b   2
c   3
    
por 26.09.2013 / 23:55