背景介绍:
在使用markdown编辑表格的时候,需要对文本内容添加|等符号,数据量大的时候需要花费较多时间插入符号,为节省时间提高效率,尝试写了可以自动化批量将待处理的文本内容格式化为markdown表格文本的Shell脚本,并可以交互式插入标题,最终生成带标题的markdown表格形式的文本内容。
实现代码:
#!/bin/bash
#Author:cosann
#Create Time:20220627
#Description:将文本格式化为markdown表格形式的文本内容
#变量值初始化
unset com
#交互式定义待处理文本和指定分隔符
read -p "###请输入要格式化的文本: " filetxt
read -p "###请指定分隔符类型[直接回车表示默认空格]:" com
#判断用户输入的分隔符,初始化分隔符
if [ -z $com ];then
com=" "
fi
#将文本主要内容文本格式化为markdown形式的文本
sed -i 's/'"$com"'/|/g;s/^/|/;s/$/|/' $filetxt 2&>1 /dev/null
#交互式定义标题数量值
read -p "请问有几个标题:" number
#生成|---|符号
#插入新行 |
sed -i '1 i\|' $filetxt
#根据标题次数,利用for循环打印 |---| 符号
for (( i=1; i<=${number}; i++ ))
do
sed -i '1 s/$/---|/' $filetxt
done
#插入标题行新行|
sed -i '1 i\|' $filetxt
#插入标题
for (( i=1; i<=${number}; i++ ))
do
read -p "请输入第$i个标题: " title
sed -i '1 s/$/'"$title"'|/' $filetxt
done
#打印处理结果提示
echo -e "====================\n===文本格式化完毕===\n====================\n"
#输出文本内容
cat "./$filetxt"
#!!!注意!!!
#脚本文件和处理文本请放在同一个文件目录
使用案例举例:
#提前准备待处理文件test.txt及脚本文件mk.sh
#查看文本内容
cat test.txt
123 456 789
654 789 789
#test.txt的文本内容分隔符为空格,因此调用脚本时直接回车,不需要另外指定
#运行脚本前记得赋予执行权限
chmod +x mk.sh
#执行脚本
./mk.sh
###请输入要格式化的文本: #提示要格式化的文本,输入test.txt
###请指定分隔符类型[直接回车表示默认空格]: #提示指定分隔符,分隔符为空格直接回车即可,若为其他;等符号,输入对应符号即可
请问有几个标题: #指定标题数量
请输入第1个标题: #输入标题
请输入第2个标题:
请输入第3个标题:
#脚本执行完毕后显示结果
|标题1|标题2|标题3|
|---|---|---|
|123|456|789|
|654|789|789|
接下来只要将格式化后的文本复制到支持markdown的软件即可自动生成标题
-
markdown表格文本内容:
-
表格生成结果:
初学shell脚本,欢迎技术交流~