Raa*_*Dev 7 regex bash grep sed
我正在向现有脚本添加一个功能,允许用户配置Linux系统的主机名.我正在执行的规则如下:
我已经解决了列表中的前两个问题,但是我无法弄清楚如何检查bash字符串是否只包含字母,数字和连字符.我认为我可以用正则表达式做到这一点,但我无法弄清楚如何(我花了过去一小时搜索网页和阅读手册页).
我愿意使用sed,grep或任何其他标准工具,但不能使用Perl或Python.
Wel*_*bog 16
似乎应该这样做:
^[a-zA-Z0-9][-a-zA-Z0-9]{0,61}[a-zA-Z0-9]$
Run Code Online (Sandbox Code Playgroud)
匹配任何一个字母数字字符,然后匹配最多61个字母数字字符(包括连字符),然后匹配任何一个字母数字字符.最小字符串长度为2,最大值为63.它不适用于Unicode.如果你需要它来使用Unicode,你需要添加不同的字符类来代替,a-zA-Z0-9
但原理将是相同的.
我相信grep
适用于Unicode 的正确表达式是:
^[[:alnum:]][-[:alnum:]]{0,61}[[:alnum:]]$
Run Code Online (Sandbox Code Playgroud)
用法示例:
echo 123-abc-098-xyz | grep -E '^[[:alnum:]][-[:alnum:]]{0,61}[[:alnum:]]$'
result=$(grep -E '^[[:alnum:]][-[:alnum:]]{0,61}[[:alnum:]]$' <<< "this-will-work"); echo $result;
echo "***_this_will_not_match_***" | grep -E '^[[:alnum:]][-[:alnum:]]{0,61}[[:alnum:]]$'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31993 次 |
最近记录: |