regex - Grepping 重叠模式匹配

标签 regex unix grep

这就是我正在运行的

grep -o ',[tcb],' <<< "r,t,c,q,c b,b,"

输出是

,t,
,b,

但是我想得到

,t,
,c,
,b,

(我不希望匹配没有前导的 b 或没有尾随的 c)

因为 ,[tcb] 应该在 'r",t,"c,q b,b,' 'r,t",c,"q b,b,' 和 'r,t,c,q b ",b,"'

但似乎当 , 包含在第一个模式匹配中时,grep 不会在模式匹配的第二个实例中查找它

有没有办法解决这个问题,或者 grep 不打算这样做

最佳答案

您可以使用 awk 而不是 grep 并将记录分隔符作为逗号:

awk -v RS=, '/^[tcb]$/{print RS $0 RS}' <<< "r,t,c,q,c b,b,"

,t,
,c,
,b,

关于regex - Grepping 重叠模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38646372/

相关文章:

javascript - js字符串替换不起作用

php - 匹配重复的单词

unix - 如何将 xml 文件编码为 xfdl (base64-gzip)?

linux - shell脚本中"if[ 0 -lt 1] command not found"错误

regex - Bash 脚本 grep 用于文本变量中的模式

xml - 使用 sed、awk、cat 或 grep 将 xml 中的 url 通过管道传输到 Linux 中的单独文件中

javascript - 获取字符串中重复序列的数量

java - 黑客排名java字符串正则表达式用户名

linux - 如何使用 AWK regExp 在不同列中以 Excel 格式打印多个子字符串模式

bash - grep 在 bash 脚本中的行为与在交互式 shell 中的行为不同