Печать нескольких подстрок, включая IP-адрес

Для этого не существует портативного способа. Но многие современные дистрибутивы Linux имеют старую устаревшую команду service, которая ведет себя как прокси для systemctl, если она запущена в ОС на основе systemd.

Таким образом, вы можете запустить команду следующим образом:

# service sshd status
Redirecting to /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-02-20 12:16:17 UTC; 1 weeks 2 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 3388 (sshd)
   CGroup: /system.slice/sshd.service
           └─3388 /usr/sbin/sshd -D
0
13.07.2020, 23:27
1 ответ

В GNU awkвы можете использовать FPATдля определения полей, которые вы хотите сопоставить, используя регулярное выражение:

awk -v FPAT='[A-Z]+=[0-9.]+' '
  { for (i=1;i<=NF;i++) printf "%s", $i (i==NF ? ORS : OFS) }
' file
  • [A-Z]+соответствует одному или нескольким символам в пределах A -Z
  • =соответствует буквальному=
  • [0-9.]+соответствует одной или нескольким цифрам и точкам

Это перебирает совпадающие поля и печатает каждое поле, используя символ пробела(OFS)в качестве разделителя. Только последнее поле NFотделяется новой строкой (ORS).

Выход:

ABC=10.100.100.100 DEF=1020
ABC=192.168.0.1 DEF=91
ABC=10.110.110.110 DEF=441
ABC=192.168.1.1 DEF=12000
2
18.03.2021, 23:19

Теги

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