shell 文件中使用sed/cut/grep命令和变量
2017-12-08 15:26
549 查看
需求:
从 all-test-suite.xml 文件中查询出对应的配置信息,然后将查询出的信息替换至suite.xml文件中遇到的问题:
sed命令中包含变量,执行无效果:问题现象:在命令行窗口执行
sed -n '/123/p' file.xml没问题,但是写入shell文件中,用sh执行时并无效果。
根本原因:在sed命令中使用了变量,导致失败。
解决方法:在sed命令中的变量前后加上单引号,如
sed -n '/'$CASE_NUM'/p' $ALL_SUITE或参考这个文章:在sed中引入shell变量的四种方法
代码:
#!/bin/sh # 判断输入参数是否为空 if [ "$1" = "" ];then echo "Need print case number!" exit 1 fi ALL_SUITE=all-test-suite.xml SUITE_FILE=suite.xml CASE_NUM=${1} # 从all-test-suite.xml文件中查找需要的信息 CASE_NAME=`sed -n '/'$CASE_NUM'/p' $ALL_SUITE | sed -n '1p' | cut -d '"' -f 2` CLASS_NAME=`sed -n '/'$CASE_NUM'/p' $ALL_SUITE | sed -n '2p' | cut -d '"' -f 2` if [ "$CASE_NAME" = "" ];then echo "Can not find case number from ${ALL_SUITE}" exit 1 fi # 从suite.xml文件中查找需要替换的字符串并替换 REPLACE_CASE_NAME=`grep 'test name=' $SUITE_FILE | cut -d '"' -f 2` sed -i 's/'${REPLACE_CASE_NAME}'/'${CASE_NAME}'/g' $SUITE_FILE REPLACE_CLASS_NAME=`grep 'class name=' $SUITE_FILE | cut -d '"' -f 2` sed -i 's/'${REPLACE_CLASS_NAME}'/'${CLASS_NAME}'/g' $SUITE_FILE cat $SUITE_FILE
相关文章推荐
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
- linux下shell脚本中sed命令使用变量
- 使用shell命令sed将指定目录下的所有文件中指定的字符串替换成指定的字符串
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- 【Shell】使用sed命令替换文件中的某一行
- Linux批量替换某种类型文件中的字符串-sed和grep命令使用
- 文件操作的常用命令 -- grep, cut, sed
- 在一个文件中插入另一个文件-sed命令使用
- Shell中的grep、awk和sed的常用命令和语法
- sed 命令的使用及shell判断语句
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- sed和awk中使用shell变量
- shell中向sed命令传递变量
- Linux内、外部命令的使用、文件权限、文件查找(find、locate、grep)
- 使用ext3grep恢复ext3文件系统中误删除文件(使用rm命令误删的)
- Shell中的grep、awk和sed的常用命令和语法 (转载)
- Shell 中grep awk 和 sed常用命令和语法
- shell sed命令使用心得
- shell脚本--检查文件是否存 cut命令详解