imprime palavras maiúsculas na primeira coluna do arquivo

2

Eu quero minha saída:

VDD.
GND
AGNDSUB 
VMEASPOS.
VMEASNEG
VREFEXT 

Arquivo1 com as seguintes informações:

Power and signal 
VDD Digital Power This pin provides power supply connection for the digital
blocks.
GND Digital Ground This pin provides ground connection for the digital blocks.
AGNDSUB Ground This pin provides substrate connection.
VMEASPOS Digital Power Voltage to be measured.
VMEASNEG Ground Ground for the voltage to be measured.
VREFEXT Digital Power Reference voltage input of 1.024V %for VSENS calibration.
operating voltage
    
por yisha 12.08.2014 / 07:49

4 respostas

7

com Gnu grep :

grep -Eow '^[[:upper:]]+' file
    
por 12.08.2014 / 08:11
3

Você pode usar awk :

awk '/^[A-Z]+\>/ { print $1 }' < data

/^[A-Z]+\>/ corresponde palavras completas em letras maiúsculas no início da linha . {print $1} imprime o primeiro campo nessas linhas.

    
por 12.08.2014 / 07:52
3

Existem várias maneiras de resolver o problema.

Você pode imprimir a primeira palavra desde que contenha apenas letras maiúsculas:

awk '$1 ~ /^[[:upper:]]+$/ {print $1}'

(imprimiria VDD , mas não VDD+DDV )

imprima a primeira palavra, desde que não contenha letras minúsculas.

awk 'NF && $1 !~ /[[:lower:]]/ {print $1}'

Isso imprimiria o VDD + DDV ou os EUA, mas não o VDDfoo, mas imprimiria +++ .

Você pode imprimir a sequência de letras no início da linha, desde que estejam todas em maiúsculas:

sed 's/[^[:alpha:]].*//;/^[[:upper:]]\{1,\}$/!d'

Ou para ignorar espaços em branco iniciais:

sed 's/^[[:blank:]]*//;s/[^[:alpha:]].*//;/^[[:upper:]]\{1,\}$/!d'

Corresponderia VDD em VDD+xxx , mas não em VDDxxx

    
por 12.08.2014 / 08:52
1

Uma solução perl :

$ perl -Mopen=locale -anle 'print $F[0] if /^[[:upper:]]+\b/' file 
VDD
GND
AGNDSUB
VMEASPOS
VMEASNEG
VREFEXT
    
por 12.08.2014 / 08:00

Tags