유닉스에서 행에서 숫자를 추출하는 방법

유닉스에서 행에서 숫자를 추출하는 방법

이 속성이 처음 나타나는 항목을 찾아서 ICount해당 값을 반환해야 합니다. 속성에는 숫자만 있습니다. 얻는 방법?

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

답변1

grep및를 사용하여 seda) 다음 정수(!) ICount(임의의 자릿수 포함)를 얻고 b) ICount지정자를 제거합니다.

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

답변2

통과하다 awk:

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

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

또는 다른 모든 속성

% <<<'< 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

답변3

도구를 개별적으로 사용하는 것이 더 좋습니다.

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

좀 더 클래식한

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

또는 grep 및 PCRE를 통해

grep -m1 -Po 'ICount\s*=\s*"?\K[0-9]+' file

관련 정보