首页 > 解决方案 > 如何对齐列文件中的内容

问题描述

我有一个包含以下内容的进程列表:

avahi- daemon 

S (sleeping)

753

1

115

122

第一行是进程的名称,第二行是状态,第三行是 pid,然后是 PPID,UID,GID。此列表已使用以下命令提取:

awk  -F":" 'NR==1 {print $2} NR==6 {print $2} NR==7 {print $2} NR==9 {print $2} NR==10 {print $2} NR==3 {print $2}' /proc/PID/status

我想对齐此内容并在所有流程的列中输出如下:

名称 PID PPID UID GID 状态

标签: bashshellscripting

解决方案


您可以轻松地重构您的 awk 脚本以生成所需的格式。

awk  -F":" 'NR==1 {name=$2}
  NR==3 {state=$2}
  NR==6 {pid=$2}
  NR==7 {ppid=$2}
  NR==9 {uuid=$2}
  NR==10 {gid=$2
    print name, pid, ppid, uid, gid, state }' /proc/PID/status

如果您想要制表符分隔的输出,请在选项-v ORS="\t"之前添加-F


推荐阅读