微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 awk 命令的密码要求

如何解决使用 awk 命令的密码要求

我的代码确实运行了,但我认为粗体部分(方程)有错误。请帮我更正代码

检查文本文件中密码的强度和强度,

  1. 长度为 9 个或更多字符
  2. 至少应包含一位数字
  3. 至少应该包含一个大写字母

如果满足要求打印“成功”否则打印“不成功”。

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 举报,一经查实,本站将立刻删除。