利用 AWK 和 Python 进行数据处理与脚本编写
1. 基于字段数量的条件处理
当用户直接登录服务器的物理控制台,而非通过远程或图形伪终端登录时,lastlog输出将不显示主机字段。例如,在 CentOS 主机上直接登录到tty1控制台并避免使用 GUI,之前 AWK 控制文件的输出显示有用户tux和bob,其中bob由于连接到控制台而缺少主机字段。
对于lastlog输出,大多数连接有 9 个字段,而直接连接到服务器控制台的只有 8 个字段。应用程序的目标是打印用户名和最后登录日期,不显示登录时间,并在BEGIN块中打印自定义标题。为确保正确处理字段位置,需使用NF内部变量计算每行的字段数。
以下是编辑后的控制文件示例:
BEGIN { printf "%8s %11s\n","Username","Login date" print "====================" } !(/Never logged in/ || /^Username/ || /^root/) { cnt++ if ( NF == 8 ) printf "%8s %2s %3s %4s\n", $1,$5,$4,$8 else printf "%8s %2s