如何使用grep提取文本文件中单引号内的首个有效字符串?
提取path字段单引号内的非空首个字符串
输入文本(文件in)
path: '', redirectTo: '/login', pathMatch: 'full' }, path: 'login', component: LoginComponent }, path: 'registration', path: 'employees', path: 'recruitment', path: 'work',
期望输出
login registration employees recruitment work
已尝试命令
grep -Po "path: '\K.*'" in
该命令会匹配到空字符串(第一行)以及单引号后的冗余内容,不符合需求。
正确的grep命令
方案1:正则直接匹配非空内容
grep -Po "path: '\K[^']+(?=')" in
- 核心逻辑:
\K:忽略前面匹配到的path: '前缀[^']+:匹配至少一个非单引号的字符,自动排除空字符串的情况(?='):正向预查,确保匹配内容紧跟单引号,避免捕获多余字符
方案2:先匹配再过滤空行(兼容旧版grep)
grep -Po "path: '\K.*?(?=')" in | grep -v '^$'
- 第一步
.*?(?=')匹配单引号内的所有内容(含空),第二步grep -v '^$'过滤掉空行
内容的提问来源于stack exchange,提问作者albertkao9
相关产品推荐
相关产品推荐

