我试图从数字3开始提取进程号。
使用ps | sed "/^\s\+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
答案 0 :(得分:2)
您需要添加-n
参数以打印与特定模式匹配的行。请注意,基本sed不支持模式\s
(用于匹配空格)。
ps | sed -n '/^ *3/p'
OR
ps | sed -n '/^[[:blank:]]*3/p'
答案 1 :(得分:2)
听起来sed并不是这项工作的最佳工具。试试awk:
ps | awk '$1 ~ /^3/'
这将打印第一列以3开头的所有行。