Colors 使grep颜色仅捕获组
如何仅对组匹配的grep中的文本进行着色 例如:Colors 使grep颜色仅捕获组,colors,grep,Colors,Grep,如何仅对组匹配的grep中的文本进行着色 例如: printf "Jon Skeet" | grep -P "Sk(.)(?:\1t)" 打印出“Jon双向飞碟”(带“双向飞碟”颜色) 我希望它只给第一个“e”(即“jonskeet”)上色 编辑: printf "zazbzcz" | grep -P "(.)((?<=.)\1){3}" printf“zazbzcz”| grep-P”()((?grep为匹配的所有内容着色,您不能仅为捕获组着色。如果您只想突出显示单个字母,但使用相
printf "Jon Skeet" | grep -P "Sk(.)(?:\1t)"
打印出“Jon双向飞碟”(带“双向飞碟”颜色)
我希望它只给第一个“e”(即“jonskeet”)上色
编辑:
printf "zazbzcz" | grep -P "(.)((?<=.)\1){3}"
printf“zazbzcz”| grep-P”()((?grep为匹配的所有内容着色,您不能仅为捕获组着色。如果您只想突出显示单个字母,但使用相同的正则表达式,您可以使用积极的前瞻性,这样它就不会成为匹配的一部分:
grep -P '(?<=Sk)(.)(?=\1t)'
grep-P'(?对于第二部分:
printf "zazbzcz" | grep --color=always "z"
打印出你想要的结果。至少对我来说是这样
我还没有找到一个合适的正则表达式,只为第一个角色的第一个实例上色,而这正是你在第一部分想要的。我知道这一点
printf "Jon Skeet" | grep --color=always "e"
打印出被着色的e
编辑:以允许使用Bash的变量
string_name=zazbzcz
变量_name=z
printf$string_name|grep--color=始终$variable_name
我希望这对你有帮助
编辑2
下面是一个包含2个参数的bash脚本
第一个参数采用字符串或文本。
第二个参数接受要着色的字符
!/bin/bash
text=${1}
彩色字符=${!#}
printf$text| grep--color=始终为$char_着色
因此,如果您调用文件colorize.sh,并且已经使其可执行。(chmod)
您只需执行以下操作:
./colorize.sh zazbzcz
这是我能做的最好的回答问题,因为我理解它
同样,我希望它能有所帮助。添加了测试case@AvdnhracNTAd9ex不确定测试用例试图匹配什么,但是如果需求真的是“突出显示匹配中的捕获组”“,那么grep就做不到了。你是在构建类似荧光灯的东西吗?我不需要使用grep,我只是觉得它会更简单。内置比第三方添加的新测试用例更受欢迎。只有在“z”和“e”是常量的情况下(但在我的情况下,它可能是“a”甚至“g”)才会起作用。”感谢Benjamin W编辑的.AvdnhracNTAd9ex,您可以将其设置为变量。我仍然不明白您正在尝试做什么。您是否有输入字符串并希望为特定字符着色?不太可能,因为在Skeet
中,您只希望为第一个e
着色。然后是什么?