【问题标题】:storing awk results to bash ${} data format将 awk 结果存储为 bash ${} 数据格式
【发布时间】:2013-10-07 20:28:22
【问题描述】:

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

谢谢

编辑:这里是代码

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

然后我不知道如何将$2 内容保存到${pid}$11${path} 并将这些字段再次保存到txt 文件...

【问题讨论】:

  • 显示一些代码。到目前为止你做了什么?你需要什么输出?
  • 帖子中添加的代码 :)

标签: linux bash shell awk


【解决方案1】:

应该这样做:

read pid path <<< $(ps aux | grep 'firefox' | awk '{print $2 " " $11}')

【讨论】:

  • 还有,如何再次将其保存到文件中?
  • 您可以将其回显到文件中,或者如果您只需要保存它,只需将输出重定向到文件中
  • @user1072976,如果你觉得有用,请接受这个答案。
【解决方案2】:

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

例如:

$result > tmp
pid=`cat tmp | cut -f 1`
path=`cat tmp | cut -f 2`
rm tmp

【讨论】:

  • 它不起作用,我将字段 $2 放入 ${pid} 然后将其保存到 pid.txt,它只生成空的 pid.txt 文件,而临时文件包含输出
  • 这里是代码:ps aux | grep '火狐' | awk '{print $2 ":" $11}' > out.txt pid='cat out.txt | cut -f1 -d: ' >> pid.txt #它什么都不做,它只生成包含所有信息的out.txt,但将pid.txt留空
  • 丢失 UUOC:cut -f1 &lt; tmp,而不是 cat tmp | cut -f1
【解决方案3】:

使用集合:

out=$(ps aux | grep 'nginx' | awk '{print $2 " " $11}' )
set $out
pid=$1
path=$2
echo $pid
echo $path

【讨论】:

    【解决方案4】:
    awk_output=($(ps aux | awk '/firefox/{print $2, $11}'))
    pid="${awk_output[0]}"
    path="${awk_output[1]}"
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2020-07-11
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多