Как заставить bash печатать вывод без полей с нулевым размером при запуске команды smem? - PullRequest
0 голосов
/ 17 апреля 2019

Вот команда 'smem', которую я запускаю в системе Redhat / CentOS Linux. Я ожидаю, что выходные данные будут напечатаны без полей с нулевым размером, однако я ожидаю заголовки столбцов.

 smem -kt -c "pid user command swap"
  PID User     Command                         Swap
 7894 root     /sbin/agetty --noclear tty1        0
 9666 root     ./nimbus /opt/nimsoft              0
 7850 root     /sbin/auditd                  236.0K
 7885 root     /usr/sbin/irqbalance --fore        0
11205 root     nimbus(hdb)                        0
10701 root     nimbus(spooler)                    0
 8446 trapsanalyzer1 /opt/traps/analyzerd/analyz        0
50316 apache   /usr/sbin/httpd -DFOREGROUN        0
50310 apache   /usr/sbin/httpd -DFOREGROUN        0
 3971 root     /usr/sbin/lvmetad -f           36.0K
63988 root     su -                               0
 7905 ntp      /usr/sbin/ntpd -u ntp:ntp -     4.0K
 7876 dbus     /usr/bin/dbus-daemon --syst    44.0K
 9672 root     nimbus(controller)                 0
 7888 root     /usr/lib/systemd/systemd-lo        0
63990 root     -bash                              0
59978 postfix  pickup -l -t unix -u               0
 3977 root     /usr/lib/systemd/systemd-ud   736.0K
 9016 postfix  qmgr -l -t unix -u                 0
50303 root     /usr/sbin/httpd -DFOREGROUN        0
 3941 root     /usr/lib/systemd/systemd-jo    52.0K
 8199 root     //usr/lib/vmware-caf/pme/bi        0
 8598 daemon   /opt/quest/sbin/.vasd -p /v        0
 8131 root     /usr/sbin/vmtoolsd                 0
 7881 root     /usr/sbin/NetworkManager --     8.0K
 8364 root     /opt/puppetlabs/puppet/bin/        0
 8616 daemon   /opt/quest/sbin/.vasd -p /v        0
23290 root     /usr/sbin/rsyslogd -n           3.8M
64091 root     python /bin/smem -kt -c pid        0
 7887 polkitd  /usr/lib/polkit-1/polkitd -        0
 8363 root     /usr/bin/python2 -Es /usr/s        0
53606 root     /usr/share/metricbeat/bin/m        0
24631 nagios   /usr/local/ncpa/ncpa_passiv        0
24582 nagios   /usr/local/ncpa/ncpa_listen        0
 7886 root     /opt/traps/bin/authorized      76.0K
 7872 root     /opt/traps/bin/pmd             12.0K
 8374 root     /opt/puppetlabs/puppet/bin/        0
 7883 root     /opt/traps/bin/trapsd          64.0K
----------------------------------------------------
   54 10                                       5.1M

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Не могли бы вы попробовать следующие меры предосторожности при удалении пробелов из последних полей (если они есть).

smem -kt -c "pid user command swap" | awk 'FNR==1{print;next} {sub(/[[:space:]]+$/,"")} $NF==0{next} 1'
1 голос
/ 17 апреля 2019

Как это?:

$ awk '$NF!=0' file
  PID User     Command                         Swap
 7850 root     /sbin/auditd                  236.0K
...
 7883 root     /opt/traps/bin/trapsd          64.0K
----------------------------------------------------
   54 10                                       5.1M

Но вместо использования формы awk ... file вы, вероятно, захотите smem ... | awk '$NF!=0'.

...