Grepはipsを含む文字列では機能しません。

Grepはipsを含む文字列では機能しません。

ファイルの次の項目をすべて出力として印刷しようとしています。予想される出力は次のとおりです(IPアドレスが異なります)。

all files calculateTotalcount 0 #211.4.2.10#expctd data flows
all files calculateTotalcount 0 #21.2.2.110#expctd data flows
all files calculateTotalcount 0 #11.44.2.10#expctd data flows
all files calculateTotalcount 0 #1.54.8.10#expctd data flows
 

私の文字列にはスペースがあり、IPアドレスがあるので、次の形式でgrepを作成しました。

grep -o -E 'all files calculateTotalcount 0 #[0-9]*'#expctd data flows'  inputfile > output file

私はこれがIPアドレスではなく数字でしか機能しないと思います。どのような修正を提案できますか?

ベストアンサー1

[0-9]*0から9までの順序で0個以上の文字と一致します(最小0123456789を含む)。角かっこ式に一致する文字のリストに追加するには、.asを追加できます。[0-9.]*.

grep -Eo 'all files calculateTotalcount 0 #[0-9.]*#expctd data flows'

または、IPv4アドレスの4次表現のみを一致させたい場合は、次のように具体的に指定できます。

grep -Eo 'all files calculateTotalcount 0 #([0-9]+\.){3}[0-9]+#expctd data flows'

または、あまり具体的には、必要な数[^#]*の文字(ゼロを含む)(一度に1行ずつ一致するため、#改行文字を含む)を指定して、IPv4アドレス、IPv6アドレス、またはホスト名の異なる表現を許可することもできます。grep

おすすめ記事