ファイルの次の項目をすべて出力として印刷しようとしています。予想される出力は次のとおりです(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