如何解决使用 awk 命令的密码要求
我的代码确实运行了,但我认为粗体部分(方程)有错误。请帮我更正代码。
检查文本文件中密码的强度和强度,
- 长度为 9 个或更多字符
- 至少应包含一位数字
- 至少应该包含一个大写字母
如果满足要求打印“成功”否则打印“不成功”。
awk 'BEGIN { FS="" ; OFS="\t";} NR>1{ if (($2)length -ge 8 && $2 ~ "[[:digit:]]" && $2 ~ "[[:upper:]]")
解决方法
您的 length()
语法错误,它是一个函数,其括号内的参数是您要返回其长度的字符串。
另外,-gt
是 shell 语法; Awk 使用常规的 >=
进行数值比较。 (您不能轻松地在 shell 中使用 >
符号,因为它是为重定向保留的;但 Awk 完全是一种独立的语言。)
最后,您的 awk 脚本似乎在 if
之后没有任何操作,甚至包括左花括号的右花括号。
awk 'BEGIN { FS=" " ; OFS="\t";} NR>1{ if (length($2) >= 8 && $2 ~ "[[:digit:]]" && $2 ~ "[[:upper:]]") print }'
可以重构脚本以利用 { print }
已经是默认操作的事实,并且您的所有条件都适用于当前输入行。
awk 'BEGIN { FS=" " ; OFS="\t";} NR>1 && length($2) >= 8 && $2 ~ "[[:digit:]]" && $2 ~ "[[:upper:]]"'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。