Как использовать grep, чтобы получить только часть строки - PullRequest
0 голосов
/ 02 февраля 2019

когда я пытаюсь отправить команду ifconfig, я получаю это

ath0  IEEE 802.11ng  ESSID:"test"  Nickname:""
      Mode:Master  Frequency:2.412 GHz  Access Point: 00:00:00:00:00:00
      Bit Rate:0 kb/s   Tx-Power=-4 dBm   Sensitivity=16/16
      Retry:off   RTS thr:off   Fragment thr:off
      Encryption key:off
      Power Management:off
      Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm
      Rx invalid nwid:475654423  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:0   Missed beacon:0

как получить из этой единственной части строки, например

ESSID:""test
Frequency:2.412 GHz

1 Ответ

0 голосов
/ 03 февраля 2019

Учитывая вашу фактическую вставку (и без учета искаженного вывода образца):

$ cat ifconf 
ath0  IEEE 802.11ng  ESSID:"test"  Nickname:""
      Mode:Master  Frequency:2.412 GHz  Access Point: 00:00:00:00:00:00
      Bit Rate:0 kb/s   Tx-Power=-4 dBm   Sensitivity=16/16
      Retry:off   RTS thr:off   Fragment thr:off
      Encryption key:off
      Power Management:off
      Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm
      Rx invalid nwid:475654423  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:0   Missed beacon:0
$ grep -oE 'ESSID:"[^"]+"|Frequency:[^ ]+' ifconf
ESSID:"test"
Frequency:2.412

это на самом деле просто расширенный RegEx, и флаг -o grep * ТОЛЬКО выводит точное совпадение, а не строку соответствия.

...