$ ip route get 255.255.255.255
ブロードキャスト 255.255.255.255 dev eth0 src 192.168.223.129
私が192.168.223.129
知っているのは、sed
コマンドを使用する必要があるということだけです。また、使用したコマンドについて教えてください。
$ ip route get 255.255.255.255
ブロードキャスト 255.255.255.255 dev eth0 src 192.168.223.129
私が192.168.223.129
知っているのは、sed
コマンドを使用する必要があるということだけです。また、使用したコマンドについて教えてください。
テキストを抽出する場合、最初に表示されるのは grep/ack です。
これを試して:
ip route get 255.255.255.255|grep -oP '(?<=src ).*'
grep
これは、これを行うための最も単純で最も適したツールであるパターン マッチングの問題です。
一致させようとしているのは、単語に続く IP アドレスsrc
です。この正規表現を使用して IP アドレスを照合し、正(\d{1,3}.){4}
の後読みを使用して、IP アドレスが次のような単語に続くことを確認できます。src
(?<=src )
$ ip route get 255.255.255.255 | grep -Po '(?<=src )(\d{1,3}.){4}'
192.168.223.129
肯定先読みを使用するには、perl 正規表現grep
のフラグを使用する必要があり、フラグは、一致を含む行全体を表示するのがデフォルトの動作であるため、行の一致する部分のみを表示するように指示します。-P
-o
grep
grep
このソリューションはip route get 255.255.255.255
、単語の後に続く IP アドレスを検索しているための出力とは無関係でsrc
あり、最初の行の最後の単語であるなどの出力の形式に依存していません。
この問題は、AWK を使用すると簡単に解決できます。宿題ではないと仮定して、仕事に適したツールを使用してください! たとえば、後で使用するために IP アドレスを変数に格納するには、次のようにします。
ip_address=$(
ip route get 255.255.255.255 |
awk '{print $NF; exit}'
)
その後、新しい変数を介して値にアクセスできます。例えば:
$ echo "$ip_address"
192.168.1.1
sed を使用すると、次のように実行できます。
ip route get 255.255.255.255 | sed -n '/src/ s/.*src //p'
-n
出力を抑制します。この/src/
ビットは、置換s///
および印刷p
コマンドを実行するラインを選択します。置換コマンドs/.*src //
は、それまでのすべてを削除しますsrc
(末尾のスペースに注意してください)。
out なしで実行できる場合はsed
、次のように動作します: Output ofip route
[aman@aman ~]$ ip route get 255.255.255.255
broadcast 255.255.255.255 dev wlan0 src 192.168.1.4
cache <local,brd>
ip
アドレスの取得
[aman@aman ~]$ ip route get 255.255.255.255|head -1|cut -f7 -d' '
192.168.1.4