com Gnu grep
:
grep -Eow '^[[:upper:]]+' file
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
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.
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
Uma solução perl
:
$ perl -Mopen=locale -anle 'print $F[0] if /^[[:upper:]]+\b/' file
VDD
GND
AGNDSUB
VMEASPOS
VMEASNEG
VREFEXT
Tags files