以下のテキストファイルがあります。
192.168.10.1
192.168.45.45
192.168.255.255
192.168.0.5
Random text comes here 8.8.8.8
224.23.25.12
225.1.2.3
226.0.0.0
227.1.2.6
227.25.25.26
228.145.123.45
229.255.255.255
Random text come here 172.32.255.255
231.25.12.12
232.45.13.45
238.0.0.0
233.1.2.3
234.255.255.255
236.123.123.123
237.153.125.155
235.235.235.255
239.239.239.10
172.21.255.255
172.31.10.10
172.16.32.21
Random text comes here 206.32.14.25
私はすべてのパブリックIPアドレスをフィルタリングするためにgrepコマンドを使用しています。私の出力は次のようになります
8.8.8.8
172.32.255.255
206.32.14.25
-o フラグを使用しない場合、コードは正常に動作します。ただし、パターンのみを取得するために-oフラグを追加すると、出力は得られません。
パスワード
egrep -vo '172\.1[6-9]([\.][0-9]{1,3}){2}|172\.2[0-9]([\.][0-9]{1,3}){2}|172\.3[01]([\.][0-9]{1,3}){2}|10([\.][0-9]{1,3}){3}|192\.168([\.][0-9]{1,3}){2}|22[456789]([\.][0-9]{1,3}){3}|23[0-9]([\.][0-9]{1,3}){3}' private_ip
これにご協力いただきありがとうございます。ありがとう
ベストアンサー1
現在の例に示すように、GNUを使用すると次のようになりますsed
。
% sed -nr 's/^#.*\s([^\s]+)$/\1/p' file.txt
8.8.8.8
172.32.255.255
206.32.14.25
またはgrep
PCREを使用してください。
% grep -Po '^#.*\s\K[^\s]+$' file.txt
8.8.8.8
172.32.255.255
206.32.14.25