使用unix grep文件的输入行

时间:2015-11-17 22:04:36

标签: unix ksh

我的文件系统上有一个文件,其中有许多pid。每个pid都在一个新的行上。例如......

26011
26013
26016
26017

我想做一个'ps -eaf |使用单个命令为文件中的每个pid'grep pid'。

有人可以帮助我如何使用文件中的输入pids以及文件中的每一行。

感谢

3 个答案:

答案 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的正则表达式