软件测试软件测试

shell sed在工作中的应用

2019-11-15  本文已影响0人  下午茶_da6d

Sed是一个行文本处理工具,可以进行文本的增删改查等操作
Sed命令的基本格式:
sed [-nefri] ‘command’ 文件名

常用选项:
-n:只打印指定行 ,举例打印第1-3行:

[avatar@xxx ~]$ nl /etc//passwd |sed -n '1,3p' 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin 

-e:文件进行多次编辑,比如将文件替换并打印

 sed -n  -e ‘s/openid1/$myopenid/g’ -e ‘p’myfile 

-f:直接将sed的动作写在一个文档内执行,可执行filename里的sed动作

sed -f filename

-i:直接修改文件内容,不输出到屏幕--** 最常用 **
常用命令:
a:在下一行新增文本 sed '1a 123456' 11.txt 文件第2行增加文本123456
d:删除指定行 sed '1,2d' 11.txt 删除第1-2行
i:插入到指定行前 sed '1i shouhang' 11.txt 插入到文件首行前
p:打印功能,一般与-n一起使用 sed -n '1p' 11.txt 打印第一行文本
s:文本替换 sed "1s/1/111/g" 11.txt 将文件11.txt第1行中字符串所有1替换为111
应用举例:将某文件env="dev"改为env="test",将openid="xxx"替换为openid="xxxnew"

[avatar@xxx ~]$ vi sedtest.sh
    1 #!/bin/bash
    2 #使用sed进行文本替换操作                                                                        
    3  
    4 file="/home/avatar/jss/config.php"
    5 keyword1="env=\"dev\""
    6 keyword2="openid=\"xxx\""
    7  
    8 lineNum1=`sed -n "/$keyword1/=" $file`
    9 lineNum2=`sed -n "/$keyword2/=" $file`
   10  
   11  
   12 #方法1:使用sed -i s file完成文本替换
   13 old="dev"
   14 new="test"
   15 sed -i "$lineNum1 s/$old/$new/g" $file
   16  
   17 #方法2:使用sed -i d a file完成文本替换
   18 lineNew="openid=\"xxxnew\""
   19 sed -i "$lineNum2 d" $file && sed -i "$(($lineNum2-1)) a $lineNew" $file
   20 cat $file
[avatar@xxx ~]$ sh sedtest.sh
env="test";
openid="xxxnew"
上一篇 下一篇

猜你喜欢

热点阅读