[英]Regex match strings in bash
我很好奇您是否可以让正则表达式将字符串的第二个字符与后面的2匹配? 对于第一个也是最后一个,它非常容易和直接,但是我很好奇它是否可以在任何str长度上完成? 在过去的一个小时中,我一直在用bash玩游戏,但我的解决方案都无法正常工作。
^(.).*\\1$
多数民众赞成在正则表达式我为第一个和最后一个字符,它可能也需要对此进行一点编辑,但我不知道如何。
你能帮我另一个吗?
examples:
abcsba - match as b(index 1) == b(index -2)
regex - match as e(index 1) == a(index -2)
abba - match
unix - not matcha as indexOf(n) != indexOf(i)
linux - not match as indexOf(i) != indexOf(u)
只需从头到尾丢弃相等数量的字符即可:
$ pat='^.(.).*\1.$'
$ [[ abcsba =~ $pat ]] && echo yes || echo no
yes
$ [[ unix =~ $pat ]] && echo yes || echo no
no
或者,通常使用{n}
(例如,将第3个字符与末尾的第3个字符匹配):
pat='^.{2}(.).*\1.{2}$'
$ [[ abcdef =~ $pat ]] && echo yes || echo no
no
$ [[ abccef =~ $pat ]] && echo yes || echo no
yes
在第二个示例中,我们使用在POSIX中定义的单字符-ERE 复制运算符{m,n}
来表示基本正则表达式和扩展正则表达式(不过,ERE变体仅在此处相关,因为bash
=~
运算符使用ERE)。 {n}
形式是一种特殊情况,等于{n,n}
,表示正好重复前一个字符(或组) n
次。
据我了解,您想提取字符。 你可以通过awk命令来做到
回声“ praveen” | awk'{print substr($ 1,1,2)}'pr 01HW497089:tmp控制器$
我在这里从字符1到字符3提取column1的值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.