0
我试图从用户列表中打印出下一个可用的UID,这是我通过搜索字段并将1添加到END部分。我也编写了脚本在该文件上运行。现在具有挑战性的部分是,我必须考虑忽略特定用户之前的行,例如:“CS241-06”并检查下一个可用的UID。如何从用户的文件中获得下一个可用的UID
这里是我的文件名myrunfile1:
CS241-01:x:791:791:CS241-01:/home/CS241-01:/bin/bash
CS241-02:x:892:892:CS241-02:/home/CS241-02:/bin/korn
CS241-03:x:907:907:CS241-03:/home/CS241-03:/bin/bash
CS241-04:x:794:794:CS241-04:/home/CS241-04:/bin/bash
CS241-05:x:795:795:CS241-05:/home/CS241-05:/bin/bash
CS241-06:x:796:796:CS241-06:/home/CS241-06:/bin/korn
CS241-07:x:797:797:CS241-07:/home/CS241-07:/bin/bash
CS241-08:x:798:798:CS241-08:/home/CS241-08:/bin/bash
CS241-09:x:799:799:CS241-09:/home/CS241-09:/bin/korn
CS241-10:x:800:800:CS241-10:/home/CS241-10:/bin/bash
CS241-11:x:801:801:CS241-11:/home/CS241-11:/bin/korn
CS241-12:x:802:802:CS241-12:/home/CS241-12:/bin/bash
CS241-13:x:803:803:CS241-13:/home/CS241-13:/bin/bash
CS241-14:x:805:805:CS241-14:/home/CS241-14:/bin/korn
CS241-15:x:804:804:CS241-15:/home/CS241-15:/bin/bash
这里是我的脚本文件:
BEGIN {
FS = ":" ; uID = 0; printf "\tNext Available UID is:\n"
}
{
if ($1 == "CS241-06")
{
lineNumber = NR
if ($3 > uID && NR >= lineNumber)
{
uID = $3
}
}
}
END{
printf "\t\t%d\n",uID+1
}
我运行命令:前忽略行之后
awk -f scriptfile myfile
我的预期输出特定的用户应该是806.我无法完成这项工作。请用这个指导我。
谢谢Rajput。您能否更新解决方案在脚本文件中的外观?对不起,但我是新手。谢谢。 – Venkata
因此,我的理解..这个脚本的解决方案搜索用户(行),并忽略用户之前的行,并通过扫描行,包括和之后的用户行打印下一个可用的UID ..是这样吗? – Venkata
我测试过了,输出总是最后一行UID的+1。我一般如果他们没有排序,如何处理? – Venkata