sed não está funcionando no linux centos, ubuntu,

1

Eu tenho um script simples que me dá alguns valores de um arquivo. Eu estou usando sed para obter esse vaules (sintaxe é dada abaixo). esses comandos estavam funcionando bem até ontem. mas agora não estou recebendo nenhum valor quando executo esses comandos. Eu não mudei nada, então estou surpreso que o que é razão. Alguém por favor pode me dizer como posso depurar o meu problema? abaixo está o texto do arquivo:

May  1 11:59:31 box2 kernel: usb 1-3: new high speed USB device using ehci_hcd and address 24
May  1 11:59:31 box2 kernel: usb 1-3: New USB device found, idVendor=0411, idProduct=0105
May  1 11:59:31 box2 kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=5
May  1 11:59:31 box2 kernel: usb 1-3: Product: USB-SATA Bridge
May  1 11:59:31 box2 kernel: usb 1-3: Manufacturer: BUFFALO
May  1 11:59:31 box2 kernel: usb 1-3: SerialNumber: 00001412AA38
May  1 11:59:31 box2 kernel: usb 1-3: configuration #1 chosen from 1 choice
May  1 11:59:31 box2 kernel: scsi27 : SCSI emulation for USB Mass Storage devices
May  1 11:59:38 box2 kernel: scsi 27:0:0:0: Direct-Access     BUFFALO  External HDD          PQ: 0 ANSI: 2 CCS
May  1 11:59:38 box2 kernel: sd 27:0:0:0: Attached scsi generic sg6 type 0
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] 976773168 512-byte logical blocks: (500 GB/465 GiB)
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] Write Protect is off
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] Assuming drive cache: write through
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] Assuming drive cache: write through
May  1 11:59:38 box2 kernel: sdf: sdf1
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] Assuming drive cache: write through
May  1 11:59:38 box2 kernel: sd 27:0:0:0: [sdf] Attached SCSI disk
O script

é:

 SERIAL=$(sed -n '5s/A.*: //p' filename)
    SIZE=$(sed -n '10s/A.*: //p' filename)
    MOUNT=$(sed -n '14s/A.*: //p' filename)
    
por Kashif 01.05.2012 / 22:02

3 respostas

12

Eu só posso supor que você estava combinando na capital A em abril e não funciona mais porque agora é em maio.

Talvez em vez de "A" você deva usar '^'.

    
por 01.05.2012 / 22:06
3

Assim como o @wfaulk diz, se o texto fornecido for o que você usa, os números devem ser 6,11,15.

SERIAL=$(sed -n 's/.*SerialNumber: \(.*\)//p' filename)
SIZE=$(sed -n 's/.*logical blocks: \(.*\)//p' filename)

pode ser mais confiável. Eu não posso ver uma maneira melhor de obter o ponto de montagem com os dados fornecidos.

Dos comentários

MOUNT=$(sed -n 's/.* sd[a-z]: \(.*\)//p' filenaem)
    
por 01.05.2012 / 22:18
2

As coisas nos arquivos de log podem desaparecer devido à rotação de log. A última vez que tive que fazer isso, achei o utilitário lshw muito útil. Por exemplo, lshw -class disk -quiet atenderá às suas necessidades. O lshw está disponível por padrão no Ubuntu e também está disponível para centos / redhat ( link ).

Eu sei que isso é fora do tópico, mas espero que seja útil para o OP.

    
por 02.05.2012 / 11:19

Tags