Unixで行から数字を抽出する方法

Unixで行から数字を抽出する方法

このプロパティが最初に表示される項目を見つけて、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

関連情報