比赛我试图使用ps | sed "/^\s\+3/"
提取有数字3桑达去除输出
的进程号,我收到一条错误消息:sed: -e expression #1, char 8: missing command
我加入一个全球性的标志:ps | sed "/^\s+3/g"
它会成功,但不会向我显示所有匹配项,它将删除所有找到的匹配项。
这是不变的输出:
PID TTY TIME CMD
3128 pts/8 00:00:00 bash
5279 pts/8 00:00:00 ps
5280 pts/8 00:00:00 sed
最后,这是输出我得到: PID TTY TIME CMD
5219 pts/8 00:00:00 ps
5220 pts/8 00:00:00 sed
从人页面中的所有行,-n是:抑制模式空间的自动打印。是不是要压制我们在这里想要的相反? (顺便说一下这个工程,但我很难理解它) – Cubia 2014-11-06 14:06:59
sed逐行读取输入。所以它在对特定行进行任何操作之前将行追加到模式空间。如果'/^* 3 /'与ps中存在的行相匹配,则-n和p会自动打印这些行。 – 2014-11-06 14:10:17
另一种方法是'ps | sed'/^* 3 /!d''我尝试在编辑中添加答案(因为它太类似于自己的答案,而且问题已关闭),但它被拒绝:( – 2014-11-06 14:55:45