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

如何检查unix脚本中的某些string之间的string?

串:

[email protected]

检查:

@ .com

我的代码

if [[ $word =~ "@" ]] then if [[ $word =~ ".com" || $word =~ ".ca" ]]

我的问题

在Linux中禁用历史logging

variables作为bash脚本中的命令

Shell脚本 – 随着时间的推移,Sudo权限丢失

GNUsorting命令的行为(使用非字母ASCII字符,如点或分号)

我怎样才能获得传递给正在运行的进程的命令行工具?

[email protected]

上面的例子通过了,这不是我想要的。 如何检查“@”和“.com”之间的字符(1或更多)?

“Where”命令(Windows)在path中有空格字符时不工作?

dynamic缩写为shell的扩展

资源的Linux脚本,禁用/冲刷额外的input

全局设置环境variables,无需重新启动Ubuntu

从linux shell脚本调用Rscript

你可以使用一个非常非常基本的正则表达式:

[[ $var =~ ^[az]+@[az]+.[az]+$ ]]

它看起来像这样的字符串:

at least one az char @ at least one az char . at least one az char

它可以得到像你想要的复杂,例如看电子邮件检查正则表达式与bash脚本 。

见行动

$ var="[email protected]" $ [[ $var =~ ^[az]+@[az]+.[az]+$ ]] && echo "kind of valid email" kind of valid email $ var="[email protected]" $ [[ $var =~ ^[az]+@[az]+.[az]+$ ]] && echo "kind of valid email" $

为什么不去像Perl的其他工具:

> echo "[email protected]" | perl -lne 'print $1 if(/@(.*?).com/)' gmail

glob模式是: [[ $word == ?*@?*.@(com|ca) ]]

? 匹配任何单个字符, *匹配零个或多个字符

@(p1|p2|p3|...)是与给定模式匹配的扩展匹配模式。 这要求:

shopt -s extglob

测试:

$ for word in @.com @a.ca [email protected] [email protected] [email protected]; do echo -ne "$wordt" [[ $word == ?*@?*.@(com|ca) ]] && echo matches || echo does not match done @.com does not match @a.ca does not match [email protected] does not match [email protected] matches [email protected] does not match

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐