【问题标题】:selecting only required lines from unix shell prompt从 unix shell 提示符中仅选择所需的行
【发布时间】:2011-02-15 07:30:32
【问题描述】:

假设我正在跑步
$: ps au
在 shell 提示符下,并且想要在其中选择第 5 个条目的第 2 个字段,无论它是哪个进程。我该怎么做?

【问题讨论】:

    标签: linux shell unix awk


    【解决方案1】:

    使用 awk。

    awk 'NR==6 { print $2 }'
    

    第 6 条记录,因为您需要跳过标题。

    【讨论】:

    • @Christopher Creutzig 的回答也同样好,接受这个是因为我想要 awk 方法,我也打算稍后使用它..
    【解决方案2】:

    如果您不想使用awk 或等效的perlruby 命令,您还可以使用更多低级工具:

    ps au | head -6 | tail -1 | cut -d ' ' -f 2
    

    【讨论】:

    • 哦,等等,但是输出是空白的,我删除了剪切部分,它可以工作,但是我不能使用剪切的 -f 选项......它不能正确识别字段跨度>
    • 嗯,这取决于你对“场”的概念。 cut 不会像 awk 那样折叠空白,但认为“空字段”是绝对正常的,你似乎有这样的。并不是说向链中添加另一个 tr -d ' ' 很困难,但是在某些时候,剩下的简单性并不多。
    【解决方案3】:

    在“ps au”输出中,第二个字段是进程ID;你可以通过告诉 ps 你需要什么来直接提取它:

    ps a -o pid=
    

    那么你只需要输出第五行:

    ps a -o pid= | sed '5!d'
    

    【讨论】:

    • 我不知道可能是什么进程 ID,我只想选择第 5 条记录,就是这样..
    • 你不需要知道你想要的进程 id:'ps a -o pid=' 打印出一个 PID 列表(和你用 'ps au' 得到的一样)
    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    相关资源
    最近更新 更多