Filter specific IP address.

Display all assigned IP addresses.

$ ip -brief address
lo               UNKNOWN        127.0.0.1/8 ::1/128 
eth0             UP             192.168.8.177/24 fe80::c278:a787:ec64:eb2c/64 
wlan0            DOWN           
tailscale0       UNKNOWN        100.83.87.118/32 fd7a:115c:a1e0:ab22:4848:ca96:6252:5676/128 fe80::4727:bc9a:13c6:b141/64 

Display all assigned IP addresses with additional details using JSON output format.

$ ip --json address | jq --raw-output '.[]'
{
  "ifindex": 1,
  "ifname": "lo",
  "flags": [
    "LOOPBACK",
    "UP",
    "LOWER_UP"
  ],
  "mtu": 65536,
  "qdisc": "noqueue",
  "operstate": "UNKNOWN",
  "group": "default",
  "txqlen": 1000,
  "link_type": "loopback",
  "address": "00:00:00:00:00:00",
  "broadcast": "00:00:00:00:00:00",
  "addr_info": [
    {
      "family": "inet",
      "local": "127.0.0.1",
      "prefixlen": 8,
      "scope": "host",
      "label": "lo",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    },
    {
      "family": "inet6",
      "local": "::1",
      "prefixlen": 128,
      "scope": "host",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    }
  ]
}
{
  "ifindex": 2,
  "ifname": "eth0",
  "flags": [
    "BROADCAST",
    "MULTICAST",
    "UP",
    "LOWER_UP"
  ],
  "mtu": 1500,
  "qdisc": "mq",
  "operstate": "UP",
  "group": "default",
  "txqlen": 1000,
  "link_type": "ether",
  "address": "e4:5f:01:12:34:87",
  "broadcast": "ff:ff:ff:ff:ff:ff",
  "addr_info": [
    {
      "family": "inet",
      "local": "192.168.8.177",
      "prefixlen": 24,
      "broadcast": "192.168.8.255",
      "scope": "global",
      "dynamic": true,
      "noprefixroute": true,
      "label": "eth0",
      "valid_life_time": 413550,
      "preferred_life_time": 327455
    },
    {
      "family": "inet6",
      "local": "fe80::c278:a787:ec64:eb2c",
      "prefixlen": 64,
      "scope": "link",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    }
  ]
}
{
  "ifindex": 3,
  "ifname": "wlan0",
  "flags": [
    "BROADCAST",
    "MULTICAST"
  ],
  "mtu": 1500,
  "qdisc": "noop",
  "operstate": "DOWN",
  "group": "default",
  "txqlen": 1000,
  "link_type": "ether",
  "address": "e4:5f:01:42:3a:68",
  "broadcast": "ff:ff:ff:ff:ff:ff",
  "addr_info": []
}
{
  "ifindex": 4,
  "ifname": "tailscale0",
  "flags": [
    "POINTOPOINT",
    "MULTICAST",
    "NOARP",
    "UP",
    "LOWER_UP"
  ],
  "mtu": 1280,
  "qdisc": "pfifo_fast",
  "operstate": "UNKNOWN",
  "group": "default",
  "txqlen": 500,
  "link_type": "none",
  "addr_info": [
    {
      "family": "inet",
      "local": "100.83.87.118",
      "prefixlen": 32,
      "scope": "global",
      "label": "tailscale0",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    },
    {
      "family": "inet6",
      "local": "fd7a:115c:a1e0:ab22:4848:ca96:6252:5676",
      "prefixlen": 128,
      "scope": "global",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    },
    {
      "family": "inet6",
      "local": "fe80::4727:bc9a:13c6:b141",
      "prefixlen": 64,
      "scope": "link",
      "stable-privacy": true,
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    }
  ]
}

Display all IP addresses assigned to the global scope.

$ ip --json  address | jq --raw-output '.[].addr_info | .[] | select(.scope == "global") | .local'
192.168.8.177
100.83.87.118
fd7a:115c:a1e0:ab22:4848:ca96:6252:5676

Display ethernet link type IP addresses with additional details using JSON output format.

$ ip --json address | jq --raw-output '.[] | select(.link_type == "none")'
{
  "ifindex": 4,
  "ifname": "tailscale0",
  "flags": [
    "POINTOPOINT",
    "MULTICAST",
    "NOARP",
    "UP",
    "LOWER_UP"
  ],
  "mtu": 1280,
  "qdisc": "pfifo_fast",
  "operstate": "UNKNOWN",
  "group": "default",
  "txqlen": 500,
  "link_type": "none",
  "addr_info": [
    {
      "family": "inet",
      "local": "100.83.87.118",
      "prefixlen": 32,
      "scope": "global",
      "label": "tailscale0",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    },
    {
      "family": "inet6",
      "local": "fd7a:115c:a1e0:ab22:4848:ca96:6252:5676",
      "prefixlen": 128,
      "scope": "global",
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    },
    {
      "family": "inet6",
      "local": "fe80::4727:bc9a:13c6:b141",
      "prefixlen": 64,
      "scope": "link",
      "stable-privacy": true,
      "valid_life_time": 4294967295,
      "preferred_life_time": 4294967295
    }
  ]
}

Display all operational and assigned IP addresses with additional details using JSON output format.

$ ip --json  address | jq --raw-output '.[] | select(.operstate == "UP") | {ifname: .ifname, addr_info: [.addr_info| .[] | {family: .family, local: .local, prefixlen: .prefixlen}]} '
{
  "ifname": "eth0",
  "addr_info": [
    {
      "family": "inet",
      "local": "192.168.8.177",
      "prefixlen": 24
    },
    {
      "family": "inet6",
      "local": "fe80::c278:a787:ec64:eb2c",
      "prefixlen": 64
    }
  ]
}

Select IP address using specific label.

$ ip --json address | jq --raw-output '.[] | select(.addr_info[].label?) | select(.addr_info[].label == "tailscale0") | .addr_info[] | select(.family == "inet") | .local'
100.83.87.118
ko-fi