最终效果
1. 自定义表格样式
2. 自定义主题颜色
- 支持三系普通颜色
- 支持16色彩虹色
- 支持单颜色
回顾一下shell语法
1. shell传递参数
我们可以在执行shell
脚本时实时传递参数从而指定某些具体的参数(在本例中包括表格的样式、颜色等),脚本中获取参数的格式为$n
。其中除n
为0
表示执行的文件名外,1
表示第一个参数,2
表示第二个参数,以此类推。
- 每一模式必须以右括号结束
- 匹配到取值符合某一模式后,执行模式所有命令直到
;;
- 一旦模式匹配则不会执行其他模式
- 如果无一模式匹配,可以使用
*
捕获该值
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
在实例中,我们通过第一个参数指定style
的值来选择不同的表格形式(具体的表格形式由制表符向量tbs
实现)。另外当第一个参数以-h
或者--h
开头时,我们可以输出help
信息:
style="$1"
case $style in
# 根据第一个参数为-0或-1或-2来实现不同的表格样式, 即给tbs赋不同的值
-0) tbs=" ";;
-1) tbs="└┴┘├┼┤┌┬┐ ───│││";;
-2) tbs="└─┘│┼│┌─┐ ───│││";;
# 如果第一个参数以%开头, 意味着我们可以外部指定tbs的值
# 把style变量开头的%去掉赋值给tbs
"%"*) tbs="${style/"%"/}";;
-h*|--h*)
echo '
t [ --- HELP --- ]
t command : draw_table.sh [style] [colors] < <file >
t pipo : echo -e A\tB\na\tb | draw_table.sh [style] [colors]
t [style] : input 16 characters
t 1~9 is Num. keypad as table,10 is not used
t 11~13 are left,middle,right in a row
t 14~16 are left,middle,right in a column
t
t [colors]: input a list,like "-3,-4,-8" sames "-green,-yellow,-white"
t It set color,table cross ,font ,middle. Or \033[xxm .
t And support custom color set every characters of sytle
t Like "\033[30m,-red,-yellow,,,,,,,,,,,,," sum 16.
'
exit
;;
esac
# ${var:-DEFAULT}: 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值
tbs="${tbs:-" ,---|||"}"
2. awk命令
awk
命令:依次对每一行进行处理,但是相比于sed
更擅长取列,个人感觉是类SQL
的文本搜索工具。
awk
的基本形式如下:
awk [-F|-f|-v] 'BEGIN{ 命令 } pattern{ 命令 } END{ 命令 }' file
参数:
代码语言:javascript复制-F: 指定分隔符
-f: 调用脚本
-v: 使用var=value的格式定义变量
特殊变量:
代码语言:javascript复制NF: 字段数量
NR: 当前处理的行数
FILENAME: 当前文件名
三个语句块:
代码语言:javascript复制BEGIN{ 命令 }: 执行前的命令
pattern{ 命令 }: 处理每一行执行的命令
END{ 命令 }: 执行完所有行后的命令
3. 自定义输出颜色
格式如下:
代码语言:javascript复制echo -e "