仅当第二列中的内容具有正数时,才返回所有输出列

Try*_*ain 3 regex bash awk grep sed

我正在寻找一种只有在第二列返回正数值时才返回一行的方法.在下面的例子中......

PID Status  Label
-   0   com.apple.CoreAuthentication.daemon
937 0   com.wacom.TabletDriver.126696
-   0   com.apple.quicklook
-   0   com.apple.parentalcontrols.check
715 48  com.apple.Finder
-   0   com.apple.PackageKit.InstallStatus
-   0   com.apple.FontWorker
786 -44 com.apple.bird
-   0   com.apple.familycontrols.useragent
-   0   com.apple.aos.migrate
-   0   com.apple.universalaccessAuthWarn
839 -44 com.apple.nsurlsessiond
Run Code Online (Sandbox Code Playgroud)

我想要一个命令导致:

PID Status  Label
715 48  com.apple.Finder
Run Code Online (Sandbox Code Playgroud)

我一直在试图通过AWK,SED,GREP,RegEx等找到一种方法来管理我的头发.我无法得到理想的结果.

我尝试过这样的事情:

launchctl list | awk '{for (i=1;i<=NF;i++) if ($i>=1) print $i} ' 但是结果不再在表格中,并且以不可读的格式返回,以及当我只想在状态/ $ 2列下获得结果时,我从列PID/$ 1获得正数.

从开始launchctl list | awk '{ print $2 }'但如果我通过GREP/SED之类的其他任何东西管道我显然无法获得其他缺少的列,因为数据已被剥离.我不是专家,也许我只是错过了关键流程 通过| 管道命令得到我想要的,所以我要求任何帮助或专业知识,以帮助指出我正确的方向.

anu*_*ava 6

你可以使用这个awk命令:

launchctl list | awk 'NR==1 || $2>0'
PID Status  Label
715 48  com.apple.Finder
Run Code Online (Sandbox Code Playgroud)

要在表格中格式化,请使用:

launchctl list | awk 'NR==1 || $2>0' | column -t
PID  Status  Label
715  48      com.apple.Finder
Run Code Online (Sandbox Code Playgroud)