我想出了如何將第 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 "s/[^[:blank:]]\{1,\}/$green&$off/3";unset green off

否則,您可以告訴sed從第三行開始尋找匹配項:
sed "3,$ s/[^[:blank:]]\{1,\}/$green&$off/3"
輸出:

uj5u.com熱心網友回復:
一種方法是忽略 sed 中輸出的前兩行:
sed "1,2 ! s/[^[:blank:]]\{1,\}/$green&$off/3";
uj5u.com熱心網友回復:
使用sed
$ ... | sed "/^[[:digit:]]/s/\(\([^ ]* \ \)\{2\}\)\([^ ]*\)/\1$green\3$off/"
uj5u.com熱心網友回復:
修改以涵蓋...echo的其他幾個實體is
$ echo -e "num co1umn1 column2 column3\n=== === === ===\n1 is is me\n2 that isn't you" | column -t
num co1umn1 column2 column3
=== === === ===
1 is is me # only colorize the 2nd occurrence of "is"
2 that isn't you # don't colorize "isn't" in 3rd column
擴展 OP 的當前sed解決方案:
sed -r "3,$ s/[^[:blank:]]{1,}/XXX&XXX/3; s/XXXisXXX/${green}is${off}/; s/XXX//g"
在哪里:
3,$- 對行號 3 到 EOF 應用以下sed腳本(即,跳過第一 2 行)- 首先我們用書擋偏移第三列的值
XXX(選擇一組你知道不會出現在資料中的字符) - 然后著色
XXXisXXX(同時洗掉XXXs) - 然后洗掉任何剩余的
XXX(從其他行的第 3 列)
這會產生:

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493708.html
