사용자 정의 헤더를 사용하여 awk 명령의 결과를 인쇄하는 방법

사용자 정의 헤더를 사용하여 awk 명령의 결과를 인쇄하는 방법

내 컴퓨터에서 실행 중인 모든 서비스를 인쇄하려고 합니다. 이를 위해 나는 명령을 사용합니다

a=$(sudo systemctl list-units --type service --all | grep running | awk -v OFS='\t' '{ print $1, $2, $4 }')

위 명령의 출력은 다음과 같습니다.

    abrt-xorg.service       loaded  running
abrtd.service   loaded  running
accounts-daemon.service loaded  running
atd.service     loaded  running
auditd.service  loaded  running
avahi-daemon.service    loaded  running
bolt.service    loaded  running
chronyd.service loaded  running
colord.service  loaded  running
crond.service   loaded  running
cups.service    loaded  running
dbus.service    loaded  running
firewalld.service       loaded  running
gdm.service     loaded  running
grafana-server.service  loaded  running
gssproxy.service        loaded  running
influxdb.service        loaded  running
irqbalance.service      loaded  running
ksmtuned.service        loaded  running
libstoragemgmt.service  loaded  running
libvirtd.service        loaded  running
lvm2-lvmetad.service    loaded  running

첫 번째 열은 서비스 이름, 두 번째 열은 로드 상태, 세 번째 열은 실행 상태입니다...

각 열의 출력 위에 헤더가 필요합니다.

column name loading status running status

어떻게 해야 하나요...도와주세요

나는 명령을 실행했다systemctl list-unit-files

결과 출력은 다음과 같습니다

UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static  
dev-mqueue.mount                              static  
proc-fs-nfsd.mount                            static

답변1

BEGINawk제목을 인쇄하려면 명령에 사용하십시오 .

systemctl list-units --type service --all | awk 'BEGIN{print "Unit State Status"};$4 ~ /^running$/{print $1,$2,$4}' | column -t

column -t읽기 쉬운 출력을 얻기 위해 파이프로 연결할 수 있습니다 . 열 4가 일치하는지 확인하는 awk대신 사용할 수도 있습니다 .greprunning

다른 의견에서 언급했듯이 실행 중인 서비스를 사용 하거나 필터링하는 systemctl list-units --type service --state=running대신 실행할 수도 있습니다 .grepawk

관련 정보