Для этого не существует портативного способа. Но многие современные дистрибутивы 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
В 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