如何修改sed命令仅为第3列中匹配'is'模式的文本添加颜色
修改方法
原命令是直接给第3列整列套绿色,要只给第3列里匹配is的内容上色,只要把sed的替换逻辑改成先锚定前两列的位置,只在第3列范围内做匹配替换就行,不会误改其他列的内容。
直接用改好的命令即可:
green=$'\033[1;32m';off=$'\e[m';echo -e "num co1umn1 column2 column3\n=== === === ===\n1 this is me\n2 that is you"|column -t|sed -E "s/^(([^[:blank:]]+[[:blank:]]+){2})([^[:blank:]]*)is/\1\3$green is$off/";unset green off
替换逻辑说明
- 开头的正则
^(([^[:blank:]]+[[:blank:]]+){2})会把每行前两列和列之间的空白完整捕获,这部分内容保持原样,不会做任何修改 - 剩余匹配逻辑只会在第3列范围内查找
is字符串,给匹配到的内容加绿色转义标记,既不会改动其他列的内容,也不会影响第3列里不匹配is的部分 - 后续如果需要更换匹配规则,直接把替换逻辑里的
is换成目标字符串或者对应正则即可
内容的提问来源于stack exchange,提问作者maria
相关产品推荐
相关产品推荐

