Изолируйте определенную информацию от терминального вывода

Как я могу сократить данные, которые я получаю, после того как я ввожу команду? Например, если я ввел:

ifconfig -a getifaddr

Я только хочу IP-адрес, ничто иное. Конечно, существует что-то еще, что я могу добавить к своей команде для простого точного определения ответов в массовом расходе текста, который получен?

К вашему сведению команда в качестве примера была просто примером

5
задан 8 July 2016 в 00:39

2 ответа

Умное использование каналы обычно является ответом. Например, можно использовать сырые данные ifconfig вывод:

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::ca60:ff:fe06:ac5b  prefixlen 64  scopeid 0x20<link>
        ether c8:60:00:06:ac:5b  txqueuelen 1000  (Ethernet)
        RX packets 622902  bytes 792538068 (755.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 392538  bytes 37764707 (36.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

И затем вырезают далеко этот вывод, пока Вы не видите информации, которая Вы после:

$ ifconfig eth0 | grep -w inet | cut -d ' ' -f 10
192.168.0.4

Мой собственный выбор оружия:

  1. Использование grep с -w опция искать только целые соответствия слова. Таким образом, мы не ловим inet6 также.
  2. Использование cut с разделитель (-d) из пространства и затем выбирает соответствующее полевое (-f) число для получения информации, которая мы после.

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

4
ответ дан 23 November 2019 в 08:59

Для добавления к ответу andrew.46s, вот то, как можно сделать это с awk и sed. Потребности также умное использование каналов.

ifconfig -a | awk '/inet/{print $2;}' | sed 's/addr://'

делает:

127.0.0.1
192.168.0.12

от:

enp2s0    Link encap:Ethernet  HWaddr 18:a9:05:e3:f6:ca  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:13845 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13845 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:1594329 (1.5 MB)  TX bytes:1594329 (1.5 MB)

wlp6s0    Link encap:Ethernet  HWaddr c4:17:fe:20:10:ed  
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::c617:feff:fe20:10ed/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:104772 errors:0 dropped:0 overruns:0 frame:3603935
          TX packets:78681 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:90707841 (90.7 MB)  TX bytes:14272953 (14.2 MB)
          Interrupt:17 
4
ответ дан 23 November 2019 в 08:59

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

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