我的文件系统上有一个文件,其中有许多pid。每个pid都在一个新的行上。例如......
26011
26013
26016
26017
我想做一个'ps -eaf |使用单个命令为文件中的每个pid'grep pid'。
有人可以帮助我如何使用文件中的输入pids以及文件中的每一行。
感谢
答案 0 :(得分:3)
如果文件中包含所有pid,则可以使用grep -f
将其用作模式本身:
ps -eaf | grep -f file
来自man grep
:
-f FILE, - file = FILE
从FILE获取模式,每行一个。空文件 包含零模式,因此不匹配。
答案 1 :(得分:2)
你可以这样做:
for pid in `cat temp.pids`; do ps -eaf | grep $pid; done
其中temp.pids是包含每行一个PID的文件
答案 2 :(得分:2)
也许试试:
ps -ef | grep -E "$(cat pids.txt | tr '\n' '|' | head -c -1)"
这会将所有pid与管道连接在一起,并将其用作grep的正则表达式