como extrair um número da linha no unix

2

Eu preciso encontrar a primeira ocorrência do atributo ICount e seu valor deve ser retornado. Apenas o número do atributo. Como conseguir isso?

< FCount = "1" ICount = "0" Ccount= "1">

Por favor me ajude nisso.

    
por karthick127 30.11.2015 / 14:07

3 respostas

1

Usando grep e sed para a) obtenha o número inteiro (!) após ICount (com qualquer número de dígitos) eb) remova o especificador ICount :

grep -o 'ICount = "[0-9]\{1,\}' | sed 's/.*"//'
    
por 30.11.2015 / 14:18
0

Via awk :

awk -F"ICount *= *\"" '{sub(/".*/,"",$2); print $2}'

Exemplo

% <<<'< FCount = "1" ICount="0" Ccount= "1">' | awk -F"ICount *= *\"" '{sub(/".*/,"",$2); print $2}'
0

ou também todos os outros atributos

% <<<'< FCount = "1" ICount="0" Ccount= "1">' | awk -F"Ccount *= *\"" '{sub(/".*/,"",$2); print $2}'  
1

% <<<'< FCount = "1" ICount="0" Ccount= "1">' | awk -F"FCount *= *\"" '{sub(/".*/,"",$2); print $2}' 
1
    
por 30.11.2015 / 14:10
0

É melhor usar a ferramenta sozinho:

sed -n '/.*ICount\s*=\s*"\?/{s///;s/[^0-9].*//;p;q;}' file

mais clássico

sed -n 's/.*ICount\s*=\s*"\?\([0-9]\+\)"\s.*//p;/ICount\s*=/q' file

ou por grep com PCRE

grep -m1 -Po 'ICount\s*=\s*"?\K[0-9]+' file
    
por 30.11.2015 / 15:01

Tags