как вы grep, awk, head и sed ip-адрес

Просто установите DownloadThemAll Firefox AddOn и наслаждайтесь !!!!

- это самый быстрый и простой способ загрузки высокой скорости с большим количеством сегментов. Я даже использую его на My Mac, а не в другом программном обеспечении для скачивания

2
задан 27 March 2018 в 01:44

6 ответов

Правильный способ:

(лучше использовать ip(8) в 2018 году)

Использование grep -P (регулярное выражение perl)

for dev in wlan0 eth0; do
    ip address show dev $dev |
        grep -oP 'inet\s+\K\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
done

Используя 4] perl

for dev in wlan0 eth0; do
    ip address show dev $dev |
        awk -F'[ /]' '/inet /{print $6}'
done

Если вы настаиваете на использовании ifconfig:

for dev in wlan0 eth0; do
    ifconfig $dev | awk '/inet /{print $2}'
done

Последнее: если вам нужно имя интерфейса на выходе:

for dev in wlan0 eth0; do
    ifconfig $dev | awk -vdev=$dev '/inet /{print dev, $2}'
done
2
ответ дан 22 May 2018 в 11:46

Правильный способ:

(лучше использовать ip(8) в 2018 году)

Использование grep -P (регулярное выражение perl)

for dev in wlan0 eth0; do ip address show dev $dev | grep -oP 'inet\s+\K\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' done

Используя

for dev in wlan0 eth0; do ip address show dev $dev | awk -F'[ /]' '/inet /{print $6}' done

Если вы настаиваете на использовании ifconfig:

for dev in wlan0 eth0; do ifconfig $dev | awk '/inet /{print $2}' done

Последнее: если вам нужно имя интерфейса на выходе:

for dev in wlan0 eth0; do ifconfig $dev | awk -vdev=$dev '/inet /{print dev, $2}' done
2
ответ дан 17 July 2018 в 18:02

Правильный способ:

(лучше использовать ip(8) в 2018 году)

Использование grep -P (регулярное выражение perl)

for dev in wlan0 eth0; do ip address show dev $dev | grep -oP 'inet\s+\K\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' done

Используя

for dev in wlan0 eth0; do ip address show dev $dev | awk -F'[ /]' '/inet /{print $6}' done

Если вы настаиваете на использовании ifconfig:

for dev in wlan0 eth0; do ifconfig $dev | awk '/inet /{print $2}' done

Последнее: если вам нужно имя интерфейса на выходе:

for dev in wlan0 eth0; do ifconfig $dev | awk -vdev=$dev '/inet /{print dev, $2}' done
2
ответ дан 23 July 2018 в 18:53

Вот пример моего ответа:

#!/bin/bash

# NAME: getIP

# Set the names of the target interfaces as array or assign the user's input
[[ -z ${@} ]] && IFACES=$(/sbin/ifconfig | sed -r '/^ .*/d; s/ .*//' | tr '\r\n' ' ') || IFACES=($@)

# Set IPv4 address match pattern
IPv4='[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'

# Get the IP address
for IFACE in ${IFACES[@]}; do
        /sbin/ifconfig "$IFACE" 2>/dev/null | grep -Po "${IPv4}" | tr '\r\n' ' ' | \
                awk -v iface="${IFACE}:" 'BEGIN{ print iface } { printf "\tinet %-16s netmask %-16s broadcast %s\n",$1, $3, $2}'
done

Примечание: сценарий основан на выходе ifconfig в Ubuntu 16.04. Использование:

$ ./getIP          # Automatic mode
enp2s0:
    inet 192.168.100.110  netmask 255.255.255.0    broadcast 192.168.100.255
lo:
    inet 127.0.0.1        netmask                  broadcast 255.0.0.0
vmnet1:
    inet 192.168.201.1    netmask 255.255.255.0    broadcast 192.168.201.255
vmnet8:
    inet 192.168.15.1     netmask 255.255.255.0    broadcast 192.168.15.255

$ ./getIP enp2s0    # User's input mode
enp2s0:
    inet 192.168.100.110  netmask 255.255.255.0    broadcast 192.168.100.255
2
ответ дан 22 May 2018 в 11:46
  • 1
    Вы прочитали мой вопрос, спасибо за пример, но я искал конкретный результат с заголовками eth0 и wlan0 с использованием sed, cut, awk, grep и head или tail – hello moto 27 March 2018 в 00:22

Вот пример моего ответа:

#!/bin/bash # NAME: getIP # Set the names of the target interfaces as array or assign the user's input [[ -z ${@} ]] && IFACES=$(/sbin/ifconfig | sed -r '/^ .*/d; s/ .*//' | tr '\r\n' ' ') || IFACES=($@) # Set IPv4 address match pattern IPv4='[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' # Get the IP address for IFACE in ${IFACES[@]}; do /sbin/ifconfig "$IFACE" 2>/dev/null | grep -Po "${IPv4}" | tr '\r\n' ' ' | \ awk -v iface="${IFACE}:" 'BEGIN{ print iface } { printf "\tinet %-16s netmask %-16s broadcast %s\n",$1, $3, $2}' done

Примечание: сценарий основан на выходе ifconfig в Ubuntu 16.04. Использование:

$ ./getIP # Automatic mode enp2s0: inet 192.168.100.110 netmask 255.255.255.0 broadcast 192.168.100.255 lo: inet 127.0.0.1 netmask broadcast 255.0.0.0 vmnet1: inet 192.168.201.1 netmask 255.255.255.0 broadcast 192.168.201.255 vmnet8: inet 192.168.15.1 netmask 255.255.255.0 broadcast 192.168.15.255 $ ./getIP enp2s0 # User's input mode enp2s0: inet 192.168.100.110 netmask 255.255.255.0 broadcast 192.168.100.255
2
ответ дан 17 July 2018 в 18:02

Вот пример моего ответа:

#!/bin/bash # NAME: getIP # Set the names of the target interfaces as array or assign the user's input [[ -z ${@} ]] && IFACES=$(/sbin/ifconfig | sed -r '/^ .*/d; s/ .*//' | tr '\r\n' ' ') || IFACES=($@) # Set IPv4 address match pattern IPv4='[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' # Get the IP address for IFACE in ${IFACES[@]}; do /sbin/ifconfig "$IFACE" 2>/dev/null | grep -Po "${IPv4}" | tr '\r\n' ' ' | \ awk -v iface="${IFACE}:" 'BEGIN{ print iface } { printf "\tinet %-16s netmask %-16s broadcast %s\n",$1, $3, $2}' done

Примечание: сценарий основан на выходе ifconfig в Ubuntu 16.04. Использование:

$ ./getIP # Automatic mode enp2s0: inet 192.168.100.110 netmask 255.255.255.0 broadcast 192.168.100.255 lo: inet 127.0.0.1 netmask broadcast 255.0.0.0 vmnet1: inet 192.168.201.1 netmask 255.255.255.0 broadcast 192.168.201.255 vmnet8: inet 192.168.15.1 netmask 255.255.255.0 broadcast 192.168.15.255 $ ./getIP enp2s0 # User's input mode enp2s0: inet 192.168.100.110 netmask 255.255.255.0 broadcast 192.168.100.255
2
ответ дан 23 July 2018 в 18:53
  • 1
    Вы прочитали мой вопрос, спасибо за пример, но я искал конкретный результат с заголовками eth0 и wlan0 с использованием sed, cut, awk, grep и head или tail – hello moto 27 March 2018 в 00:22

Другие вопросы по тегам:

Похожие вопросы: