如何提取文件中首个以1.开头且后接非数字字符的行
问题分析
你原有代码存在4处不符合需求的问题:
- 正则表达式中未转义
.:.在正则语法中是通配符,可匹配任意单个字符,导致1.1some text这类行也会被命中 - 数字匹配范围错误:你需要的是
1.开头,不是任意数字开头,无需使用[0-9]匹配全量数字 - 后缀匹配规则错误:你要求
1.后接非数字字符,原有[a-z]仅能匹配小写字母,无法覆盖所有非数字场景 - 未限制匹配数量:默认grep会返回所有符合规则的行,你需要仅取第一个匹配结果
修正后代码
q=$(grep -m 1 "^1\.[^0-9]" "file") echo "$q"
规则说明
-m 1:匹配到第一个符合条件的行后就停止搜索,直接返回结果^1\.:精确匹配行开头的1.字符串,\用来转义.让它变成普通字符匹配[^0-9]:匹配任意非数字的字符,满足你1.后接非数字的要求
内容的提问来源于stack exchange,提问作者Diego660
相关产品推荐
相关产品推荐

