0

我有一个关于 bash 和 awk 的问题,所以,我要过滤进程列表,ps aux然后我做了过滤grep,然后我再次过滤它,awk只显示进程的 pid 和路径,然后将其保存到对应${pid}${path}字段。问题是,当我使用 awk 完成过滤结果时,我将把这些结果保存在${pid}pid 编号和${path}进程路径上,但我完全不知道做那件事。如果这里有人有解决方案,将不胜感激。

谢谢

编辑:这是代码

ps aux | grep 'firefox' | awk '{print $2 " " $11}'

然后我不知道该怎么做才能将$2内容保存到并${pid}再次将这些字段保存到txt文件...$11${path}

4

4 回答 4

1

这应该这样做:

read pid path <<< $(ps aux | grep 'firefox' | awk '{print $2 " " $11}')
于 2013-10-07T06:43:16.143 回答
0
awk_output=($(ps aux | awk '/firefox/{print $2, $11}'))
pid="${awk_output[0]}"
path="${awk_output[1]}"

如果您的路径可以包含空格,您将需要一个涉及设置 IFS 的不同解决方案。

于 2013-10-07T12:28:22.490 回答
0

使用集:

out=$(ps aux | grep 'nginx' | awk '{print $2 " " $11}' )
set $out
pid=$1
path=$2
echo $pid
echo $path
于 2013-10-07T06:27:57.930 回答
0

如果一切都失败了,请记住您拥有可以使用的磁盘。将结果通过管道传输到文件,然后使用awkor处理文件cut两次以将字段分配给相应的变量。

例如:

$result > tmp
pid=`cat tmp | cut -f 1`
path=`cat tmp | cut -f 2`
rm tmp
于 2013-10-07T06:25:25.847 回答