如何使用bash从文件中打印特定列?

San*_*ole 0 shell awk grep

我有文件的上下文如下:

               CA Services Status Report

           Component Name               Pid        Status
------------------------------------  -------  --------------
WAAE Web Server (ASD)                   20841  running
WAAE Application Server (ASD)           20281  running
WAAE Scheduler (ASD)                    20486  running
WAAE Agent (WA_AGENT)                   20109  running
CA-wcc-services Server                  22385  running
CA-wcc Server                           24410  running
Run Code Online (Sandbox Code Playgroud)

我只想在屏幕上打印Pid。

我尝试使用awk和grep,但无法打印Pid。

cat test | awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)

我只想打印“ Pid”列,但无法完全打印它。

Rav*_*h13 5

您能否尝试以下内容(已通过提供的示例进行了测试)。

awk 'NF && !/Report/ && !/Status/ && !/^-/{print $(NF-1)}' Input_file
Run Code Online (Sandbox Code Playgroud)

或(根据詹姆士爵士的评论):

awk 'NF&&$(NF-1)~/[0-9]+/{print $(NF-1)}' Input_file
Run Code Online (Sandbox Code Playgroud)

  • $(NF-1)是最好的。也许将其简化为:`awk'NF && $(NF-1)〜/ [0-9] + / {print $(NF-1)}'文件` (3认同)