sed 、awk 项目中的shell脚本使用

2018-12-11  本文已影响0人  冰舞one

需求:把查询中的相关进程名称改成中文,并不修改源文件内容

源文件:

[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}

上一篇下一篇

猜你喜欢

热点阅读