sed 流式编辑器
sed 流式编辑器 ,可以非交互式修改文本,逐行操作,可以实现增删改查
sed 基础用法
使用方法
一, 前置命令 | sed 选项 (定址符)指令
二, sed 选项 (定址符)指令 文本
选项:
-n 屏蔽默认输出
-r 支持扩展正则
-i 写入文件
指令:
p 输出指定内容
d 删除指定内容
示例
df | sed -n '1p' //输出df指令生成的文本中第1行
sed -n '/San/p' txt // 打印匹配San的行
sed 'p' txt //输出所有行2次
sed -n 'p' txt //输出所有行1次
sed -n '1p' txt //输出第1行
sed -n '2p' txt //输出第2行
sed -n '1,2p' txt //输出1到2行
sed -n '1,3p' txt //输出1到3行
sed -n '2,+4p' txt //输出第2行,以及后面的4行
sed -n '2p;4p' txt //输出第2行,第4行
sed -n '1~2p' txt //输出第1行后间隔2行才输出一次,也就是135..
d 删除
sed '1d' txt //删第1行
sed '2d' txt
sed '2,5d' txt //删2到5行
sed '2,+1d' txt //删第2行以及后面1行
sed '2d;4d' txt //删第2行,第4行
sed '1~2d' txt //删奇数行
sed '2~2d' txt //删偶数行
指令
s 替换
sed '/old/new/' 文件
sed 's/old_word/new_word/g' 文件名 // 匹配所有行的词全部替换
sed 's/old_word/new_word/' 文件名 // 替换所有行匹配的第一个词
sed '2s/old_word/new_word/' 文件名 // 替换第二行匹配的第一个词
sed '2s/old_word/new_word/2' 文件名 // 替换第二行第2个匹配到的词
// /bin/bash 替换成 /sbin/sh
sed 's//bin/bash//sbin/sh/' txt //替换失败,替换符号冲突
sed 's#/bin/bash#/sbin/sh#' txt //更换替换符号为#
sed 's(/bin/bash(/sbin/sh(' txt //更换替换符号为(
// 基本正则
sed 's/^/#/g' 文件名 //将所有行开头替换成#
sed 's/^#a//g' 文件名 //将所有以#a开头的行替换成控
sed 's/.//2;s/.$//' txt3 //利用替换功能,删除每行的第2个字符和最后一个字符
sed 's/[0-9]//g' txt3 //利用替换,删除所有数字
sed '/^Feb/s/$/***/' txt3 // 把***添加到以Feb开头的行尾
// 扩展正则
sed -r 's/a{1,3}//g' 1.txt
\(\) 保留 \1 \2 \3
() 划分范围
egrep "(bin:/){2}" txt //找2个连续的bin:/
sed -r 's/^(.)(.*)(.)$/\3\2\1/' txt3 //将文本中第一个字符和最后一个字符互换
sed -r 's/([A-Z])/[\1]/g' txt3 //将所有大写字母,加上中括号
指令
a 行后添加
i 行前添加
c 替换行
sed 'a 888' test //每行后添加
sed '1a 888' test //第一行后添加
sed '1,3a 888' test //1到3行后添加
sed '1,+3a 888' test //从1行开始添加,再后面三行添加
sed '1~3a 888' test //第1行添加后间隔3行添加
sed '/A/a 888' test // 正则匹配
sed '1~3i 888' test
sed '1,+2i 888' test
sed '1,3i 888' test
sed '1i 888' test
sed 'i 888' test
编写脚本,实现vsftpd服务装包配置启服务的全过程,开启上传功能
#!/bin/bash
yum -y install vsftpd &> /dev/null
sed -i 's/^#anon_u/anon_u/' /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
systemctl enable vsftpd
chmod o+w /var/ftp/pub
测试时关闭防火墙和selinux
客户端访问
ftp://ip
所有的事都会过去,我们所有的人都是从小白开始,坚持下去。