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"
网友评论