1.指令:
P:输出
d:删除
1.删除文件最后一行:
# sed ’ /KaTeX parse error: Expected 'EOF', got '#' at position 37: … 2.删除文件的空行: #̲ sed ' /^/d ’ test. txt
s:替换
语法结构:
1.sed ‘s/old/new/’ test . txt
# sed ‘/KaTeX parse error: Expected 'EOF', got '#' at position 28: …xt 2.删除文件的空行: #̲ sed '/^/d’ test . txt
替换
# cat test. txt
2017 2018 2019
2017 2017 2019
2017 2017 2017
语法结构:
1.# sed ‘s/old/new/’
//替换第一个匹配到的old
2.# sed ‘s/old/neg/g’
//替换匹配到所有的old
3.# sed ‘/old/new/2’
//替换每行匹配到的第二个
替换实现删除的效果
1. # sed ‘s/old//2’
//删除匹配到每行的第二个
1. sed -n ‘s/old/new/p’
//打印出替换之后的结果
案例演示
1.将passwd中每行的第三个xml替换为XML
# sed ‘s/xml/XML/3’ text.txt
2.将passwd中每行的xml删除
# sed 's/xml//g' text.txt
3.将每行的/bin/bash替换为/bin
# sed 's#/bin/bash#/bin/sh#'
//s替换中的条件/是一个分隔符,分隔符可以替换为#,$,%等,为了便于文件修改
4.将4-7行的注释去掉(去掉每行开头的#号)
# sed '4,7s/^/#/' text.txt
5.将以#an开头的注释去掉(去掉每行开头的#号)
# sed 's/^#an/an/' text.txt
6.删除文件中每行的第二个字符,最后一个字符(两次操作,需要用分号;隔开)
#sed 's/.//2 ; s/.$//' text.txt
7.将文件中每行的第一个和最后一个字符进行互换:
# sed -r 's/^( . )( .* )( . )$/\3\2\1/' text.txt
// -r 选项支持扩展正则
8.删除文件中所有数字
# sed 's/[0-9]//' text.txt
9.删除行首的空格:
# sed -r 's/^( )+//' text.txt
10.为文件中每个大写字母添加括号
# sed 's/([A-Z])/[\1]/g'
实例:编写一个ftp.sh脚本,用来安装配置匿名FTP服务:
脚本实现功能:
1.通过yum安装vsftpd软件包
2.修改vsfatpd服务配置,开启匿名上传
3.调整/var/ftp/pub/目录权限,允许ftp写入
4.启动vsftpd服务,设置为开机自启