grep / sed / awk все перед определенной строкой - PullRequest
2 голосов
/ 11 января 2012

Моя команда имеет следующий необработанный вывод

Wi-Fi:

      Software Versions:
          CoreWLAN: 2.1.1 (211.3)
          CoreWLANKit: 1.0.1 (101.1)
          Menu Extra: 7.0.1 (701.2)
          configd plug-in: 7.1.1 (711.1)
          System Profiler: 7.0 (700.3)
          IO80211 Family: 4.1.1 (411.1)
          WiFi Diagnostics: 1.0.1 (101.1)
          AirPort Utility: 5.5.3 (553.20)
      Interfaces:
        en1:
          Card Type: AirPort Extreme  (0x14E4, 0xD6)
          Firmware Version: Broadcom BCM43xx 1.0 (5.100.98.75.18)
          MAC Address: xx:xx:xx:xx:xx:xx
          Locale: FCC
          Country Code: US
          Supported PHY Modes: 802.11 a/b/g/n
          Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
          Wake On Wireless: Supported
          AirDrop: Supported
          Status: Connected
         **Current Network Information:**
            PEETS:
              PHY Mode: 802.11g
              BSSID: 00:17:c5:0c:85:50
              Channel: 6
              Country Code: US
              Network Type: Infrastructure
              Security: None
              Signal / Noise: -52 dBm / -89 dBm
              Transmit Rate: 54
          Other Local Wi-Fi Networks:
            hpsetup:
              PHY Mode: 802.11b
              BSSID: ba:78:b7:86:78:69
              Channel: 6
              Network Type: Computer-to-Computer
              Security: None
              Signal / Noise: -90 dBm / -92 dBm
            yogurtland:
              PHY Mode: 802.11g
              BSSID: 0c:d5:02:7b:ce:5b
              Channel: 11
              Network Type: Infrastructure
              Security: WEP
              Signal / Noise: -72 dBm / -92 dBm

Тем не менее, я хочу получить информацию только после "Текущая информация о сети:".Подсчет строк до не работает, так как эта информация является переменной.Кроме того, знаки фунта были введены мной.Пожалуйста, игнорируйте их

Ответы [ 4 ]

4 голосов
/ 11 января 2012

Использование awk:

awk '/Current Network Information/,0' INPUT_FILE

Использование sed:

sed -n '/Current Network Information/,$p' INPUT_FILE
3 голосов
/ 11 января 2012
yourcommand | sed -e '1,/Current Network Information/d'

1,/Current Network Information/ - это спецификатор адреса для команды sed d

1 голос
/ 11 января 2012

Это может работать для вас:

sed '/Current Network Information:/,$!d' file
0 голосов
/ 11 января 2012

Другой подход к awk:

awk '/Current Network Information:/ { shouldPrint = 1 } shouldPrint'
...