awk 脚本提供结构化列表

awk 脚本提供结构化列表

我正在尝试创建 awk 脚本,该脚本可以为所有大于 1000 的 UID 提供结构化的帐户信息列表。这是我尝试过的: 这是预期的输出

BEGIN { FS=":"}

$3>1000 && $3<2000 {print $1   "  uid: " $3 " Full name: " $5 " Home dir "$6 " Shel :"$7}BEGIN { FS=":"} 

我得到的结果

答案1

尝试这个:

BEGIN { FS=":" }
{
  if($3 > 1000 && $3 < 2000){
    print $1
    print " uid: " $3
    print " Full name: " $5
    print " Home dir: " $6
    print " Shel: " $7
  }
}

第一行 - BEGIN { FS=":" }- 在脚本运行开始时设置字段分隔符:。每行将被拆分为单独的列并保存到变量$1- $nn是分隔字段的数量)。

之后你就有了{ }这个,它将对每个输入行执行。它有内部if并检查uid值,print如果值正确,s 将打印所需的数据。

答案2

这里的问题是 awk 将 UID 解释为字符串;您可以通过对其进行整数计算强制它解释为整数以进行比较。

最简单的方法是将 0 添加到该值中。

所以

$3 + 0 > 1000 && $3 + 0 < 2000

这有一个很好的 awk 参考:https://www.gnu.org/software/gawk/manual/html_node/Strings-And-Numbers.html#Strings-And-Numbers

相关内容