如何在Bash中匹配包含未知长度数字的特定格式字符串
如何在Bash中匹配包含未知长度数字的特定格式字符串
别担心,你的问题我完全明白啦!其实用grep结合正则表达式就能轻松解决这个需求,完全不需要换其他工具~
你要匹配的是「以s(或S)开头,中间跟着任意数量的数字,最后以e(或E)结尾」的字符串,这里给你几个实用的命令方案:
基础匹配(小写s/e,中间至少1个数字)
如果你只需要匹配小写的s和e,中间必须有至少一个数字,用这个命令:
grep 's[0-9]\+e' 你的文件名.txt
语法解释:
s:精准匹配小写字母s[0-9]:匹配任意单个数字(也可以用\d,不过部分环境里[0-9]兼容性更好)\+:表示前面的数字可以出现1次或多次(这是基础正则BRE的写法,需要加反斜杠)
简洁版扩展正则写法
如果觉得反斜杠麻烦,可以用扩展正则ERE模式,加-E参数,语法更直观:
grep -E 's[0-9]+e' 你的文件名.txt
这里的+直接表示前面的数字出现1次或多次,不用加反斜杠,可读性更高。
大小写不敏感匹配
如果需要同时匹配大写的S/E和小写的s/e,只需要加-i参数忽略大小写:
grep -Ei 's[0-9]+e' 你的文件名.txt
拿你给出的示例内容测试的话,执行上面的命令后,两行包含s838e和s9e的内容都会被正确匹配出来哦。
要是你还需要匹配中间可能有0个数字的情况(比如se),只需要把+换成*就可以了,不过看你的例子应该是至少有一个数字,所以用+更贴合需求。
备注:内容来源于stack exchange,提问作者UnitedKingdom
相关产品推荐
相关产品推荐

