shell脚本从文件中读取数据按照特定的格式写文件
具体脚本如下:
#!/bin/bash
setParams(){
sed -i '$d' $3
echo $2 | tr -d '[]'|awk -F, '{
for(i=1;i<=NF;i++)
if(match($i,/ENDTIME/)||match($i,/STARTTIME/)){
if(length(substr($i,index($i,":")))==10)
{
sub(/:.*/,",TimeUtils.getYM(0,0)",$i);
print $i;
}
else if(length(substr($i,index($i,":")))==13)
{
sub(/:.*/,",TimeUtils.getYMD(0,0,-1)",$i);
print $i
}
else if(length(substr($i,index($i,":")))==7)
{
sub(/:.*/,",TimeUtils.getY(0)",$i);
print $i
}
}else{
sub(/:/,",",$i);
print $i
}
}' | awk 'BEGIN{
FS="\r"
print " public static final HashMap<String,String> '"$1"' = new HashMap<String,String>{{"
}
{
for(j=1;j<=NF;j++)
print " put("$j");"
}
END{ print " }};" }' >> $3
sed -i '$a\}' $3
}
addParamInfile(){
mapVar=$(sed -n '/'"$1"'[ =]/p' $2)
echo "=========start exec addParamInfile========="
if [[ -z $mapVar ]]; then
echo "+++++start insert paramters ${1}."
setParams $1 $3 $2
cat $2
echo "+++++end insert paramters ${1}."
else
echo "$1 already exists."
fi
echo "=========end exec addParamInfile========="
}
createMapFile(){
echo "=========start exec createMapFile========="
mapFileDirPath=${1}"/"${2}
echo "create new folder $mapFileDirPath ..."
mkdir $mapFileDirPath
fullFileName=${mapFileDirPath}"/"${3}".java"
echo "create new file $fullFileName ..."
echo -e "public static $3{\n}">$fullFileName
cat $fullFileName
echo "=========end exec createMapFile========="
}
printTitle(){
echo
echo "###################################################################################"
echo "# #"
echo "# The Time Of Running Scrpit:$(date) #"
echo "# #"
echo "###################################################################################"
echo
}
addUrl(){
urlnametemp=$(sed -n '/'"${2}"'[ =]/p' $1 | cut -d = -f 2 | tr -d '"')
urlPathinfile=$(echo ${urlnametemp%;*})
echo "========Insert Or Modify urlPath information=========="
echo "Modify $1"
if [[ -z $urlPathinfile ]]; then
sed -i '/}/i\ public static final '"$2"'="'"$3"'";' $1
echo "Finish to insert $2 ."
else
if [[ "$urlPathinfile" == "$3" ]]; then
echo "$urlPathinfile already exists."
else
echo "Modify $urlPathinfile ..."
sed -i '/'"${2}"'[ =]/s#'"$urlPathinfile"'#'"$3"'#g' $1
fi
fi
}
addParameters(){
echo "========Insert Or Modify urlParameters information=========="
#api参数存储文件名称
fileName=$(echo $2|tr [a-z] [A-Z])"_inforMap"
#api所属看板缩写目录名称,全路径
mapFileDirPath=$(find $1 -iname $2)
echo "The folder is $mapFileDirPath"
#判断目录是否存在;存在时,进行下一步处理;不存在时,新建目录、文件
if [[ -d $mapFileDirPath ]]; then
echo "$mapFileDirPath already exists."
fullFileName=$(find $1 -iname ${fileName}"*")
echo "目录文件已存在,插入新的api参数常量."
addParamInfile $urlName $fullFileName $urlPara
else
echo "目录文件不存在,新建目录文件."
createMapFile $1 $2 $fileName
echo "新增api的参数常量"
addParamInfile $3 $fullFileName $4
fi
}
if [[ -z $1 ]]; then
echo "Usage: bash addUrlParamUtil.sh 数据读取文件"
elif [[ -f $1 ]]; then
printTitle>>informaputil.log
mapDir=$(find . -iname "mapinfo")
urlFileName=$(find . -iname "urlmap*")
count=1
while read urlInfor
do
echo
echo "#######################执行第$count次########################"
#api的名称
urlName=$(echo $urlInfor|awk 'BEGIN{FS="[ \t]"} {print $2}')
#api的url参数
urlPara=$(echo $urlInfor|awk 'BEGIN{FS="[ \t]"} {print $4}')
#api所属看板缩写,即目录名称
mapFileDir=$(echo $urlInfor|awk 'BEGIN{FS="[ \t]"} {print $1}')
#api的url
urlPath=$(echo $urlInfor|awk 'BEGIN{FS="[ \t]"} {print $3}')
#新增api的url
addUrl $urlFileName $urlName $urlPath
#新增api的入参
addParameters $mapDir $mapFileDir $urlName $urlPara
let count=$count+1
done<$1>>informaputil.log
else
echo "$1 is not a file."
fi
原文地址:https://www.cnblogs.com/zhangtec/p/15149982.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Go语言探险】线上奇怪日志问题的排查
- 探索 Apache NIFI 集群的高可用
- 面试被问:Spring Boot中Tomcat是如何启动的?
- Spring Boot 实现定时任务的动态增删启停等管理!
- Apache NIFI ExecuteScript组件脚本使用教程
- Redis必会的性能监控指标汇总
- 带你体验Apache NIFI新建数据同步流程(NIFI入门)
- Spring JPA 存储库接口定义
- 如何给Apache开源项目贡献代码
- 深入解析Apache NIFI的调度策略
- Linux 帮助命令及工具(tldr,man,help,info)
- Json Jolt教程
- Linux 日常操作
- 回顾|腾讯云 CFS 文件存储给 Serverless 云函数带来的业务新场景
- Apache NIFI Run Duration深入理解