bash - 如何对齐列文件中的内容
问题描述
我有一个包含以下内容的进程列表:
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 状态
解决方案
您可以轻松地重构您的 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
。