![awk 脚本提供结构化列表](https://linux22.com/image/1583301/awk%20%E8%84%9A%E6%9C%AC%E6%8F%90%E4%BE%9B%E7%BB%93%E6%9E%84%E5%8C%96%E5%88%97%E8%A1%A8.png)
答案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
- $n
(n
是分隔字段的数量)。
之后你就有了{ }
这个,它将对每个输入行执行。它有内部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