需求:把查询中的相关进程名称改成中文,并不修改源文件内容
源文件:
[root@localhost scripts]# cat en_source.txt
system [ OK ]
Monitor [ OK ]
Location [ OK ]
Apple [ OK ]
orange [ NO ]
Automatic [ OK ]
[root@localhost scripts]#
最后实现的结果
[root@localhost scripts]# sh en_ch.sh
系统 [ 正确 ]
监控 [ 正确 ]
定位 [ 正确 ]
苹果 [ 正确 ]
橙子 [ 错误 ]
自动测试 [ 正确 ]
[root@localhost scripts]#
模拟创建项目中相应的文件
文件模拟的是查看进程状态生产的文件/servers/scripts/en_source.txt
进程中文意思的文件:/servers/scripts/ch_file.txt
[root@localhost scripts]# cat ch_file.txt
系统
监控
定位
苹果
橙子
自动测试
脚本实现;
相关知识:awk 的条件判断,取列;awk 显示行号awk '{print NF}' 文件名;
sed 替换 sed -i -r "s###g"
文件是否存在判断 [ -f ${SourcesFile} -a ${CHINA} ] || echo "${SourcesFile} or ${CHINA} file does not exist!"
shell 语言for循环语句 实现sed 的循环替换
fornin $(awk '{print NR}' ${FileStatus})
do
CPART="${n}s#(.*)#`sed -n ${n}p ${CHINA}` `sed -n ${n}p ${FileStatus}` #g"
sed -i -r "${CPART}" ${ATSPATH}
done
shell 脚本:
[root@localhost scripts]# cat en_ch.sh
#!/bin/bash
#定义的文件所在路径变量
SourceFile=/servers/scripts/en_source.txt
CHINA=/servers/scripts/ch_file.txt
FileStatus=/servers/scripts/file_status.txt
ATSPATH=/servers/scripts/Atsflie.txt
#判断文件是否存在;不存在给出提示
[ -f ${SourcesFile} -a ${CHINA} ] || echo "${SourcesFile} or ${CHINA} file does not exist!"
#连续执行命令
cat ${SourceFile}>${ATSPATH} && \
awk '{if($3 == "NO"){$3="错误"}else if($3 == "OK"){$3="正确"} print $2,$3,$4}' ${SourceFile}>${FileStatus}
for n in $(awk '{print NR}' ${FileStatus})
do
CPART="${n}s#(.*)#`sed -n ${n}p ${CHINA}` `sed -n ${n}p ${FileStatus}` #g"
sed -i -r "${CPART}" ${ATSPATH}
done
cat ${ATSPATH}
网友评论