外贸网站 备案,色盲能治好吗,无锡网站制作哪家有名,宁国做网站的公司sed是一种流编辑器#xff0c;它是文本处理中非常中的工具#xff0c;能够完美的配合正则表达式使用#xff0c;功能不同凡响。 处理时#xff0c;把当前处理的行存储在临时缓冲区中#xff0c;称为“模式空间”#xff08;pattern space#xff09;#xff0c;接着用s… sed是一种流编辑器它是文本处理中非常中的工具能够完美的配合正则表达式使用功能不同凡响。 处理时把当前处理的行存储在临时缓冲区中称为“模式空间”pattern space接着用sed命令处理缓冲区中的内容处理完成后把缓冲区的内容送往屏幕。 接着处理下一行这样不断重复直到文件末尾。文件内容并没有改变除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件简化对文件的反复操作编写转换程序等。 工作流程 读取---执行---显示 sed 用法参数 常见用法 sed [选项] 操作 参数 sed [选项] -f scriptfile 参数 参数文件指定待处理的文本文件列表 常见选项 -escript或--expressionscript以选项中的指定的script来处理输入的文本文件 -fscript文件或--filescript文件以选项中指定的script文件来处理输入的文本文件 -h或--help显示帮助 -n或--quiet或——silent仅显示script处理后的结果 -V或--version显示版本信息。 -i 直接编辑文本文件 常见操作 a\ 在当前行下面插入文本。 i\ 在当前行上面插入文本。 c\ 把选定的行改为新的文本。 d 删除删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容并替代当前模板块中的文本。 G 获得内存缓冲区的内容并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行改变当前行号码。 p 打印模板块的行。 P(大写) 打印模板块的第一行。 q 退出Sed。 b lable 分支到脚本中带有标记的地方如果分支不存在则分支到脚本的末尾。 r file 从file中读行。 t label if分支从最后一行开始条件一旦满足或者Tt命令将导致分支到带有标号的命令处或者到脚本的末尾。 T label 错误分支从最后一行开始一旦发生错误或者Tt命令将导致分支到带有标号的命令处或者到脚本的末尾。 w file 写并追加模板块到file末尾。 W file 写并追加模板块的第一行到file末尾。 ! 表示后面的命令对所有没有被选定的行发生作用。 打印当前行号码。 # 把注释扩展到下一个换行符以前。 sed替换标记 g 表示行内全面替换。 p 表示打印行。 w 表示把行写入一个文件。 x 表示互换模板块中的文本和缓冲区中的文本。 y 表示把一个字符翻译为另外的字符但是不用于正则表达式 \1 子串匹配标记 已匹配字符串标记 sed元字符集 ^ 匹配行开始如/^sed/匹配所有以sed开头的行。 $ 匹配行结束如/sed$/匹配所有以sed结尾的行。 . 匹配一个非换行符的任意字符如/s.d/匹配s后接一个任意字符最后是d。 * 匹配0个或多个字符如/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 [] 匹配一个指定范围内的字符如/[ss]ed/匹配sed和Sed。 [^] 匹配一个不在指定范围内的字符如/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头紧跟ed的行。 \(..\) 匹配子串保存匹配的字符如s/\(love\)able/\1rsloveable被替换成lovers。 保存搜索字符用来替换其他字符如s/love/****/love这成**love**。 \ 匹配单词的开始如:/\love/匹配包含以love开头的单词的行。 \ 匹配单词的结束如/love\/匹配包含以love结尾的单词的行。 x\{m\} 重复字符xm次如/0\{5\}/匹配包含5个0的行。 x\{m,\} 重复字符x至少m次如/0\{5,\}/匹配至少有5个0的行。 x\{m,n\} 重复字符x至少m次不多于n次如/0\{5,10\}/匹配5~10个0的行。 准备一个文件 这是我准备的一个文件内容如上名字为test.txt sed用法示例 输出 输出所有内容等同于cat test.txt sed -n p test.txt 显示第三行 sed -n 3p test.txt 输入3-5行 sed -n 3,5p test.txt 输出所有奇数行n---表示读入下一行 sed -n p;n test.txt 输出所有偶数行sed -n n;p test.txt 输出1-5奇数行 sed -n 1,5{p;n} test.txt 输出包含the的行 sed -n /the/p test.txt 输出第4行至第1个包含the的行 sed -n 4,/the/p test.txt 输出包含the的所在行的行号 用来输出行号 sed -n /the/ test.txt 输出以PI开头的行 sed -n /^PI/p test.txt 输出以数字结尾的行 sed -n /[0-9]$/p test.txt 输出包含单词wood的行 \ ,\表示单词边界 sed -n /\wood\/p test.txt 删除 nl---计算文件的行数 删除第3行 nl test.txt | sed 3d 删除3-5行 nl test.txt | sed 3,5d 删除包含cross的行 nl test.txt | sed /cross/d 删除不包含cross的行 nl test.txt | sed /cross/!d 删除开头为小写字母的行 sed /^[a-z]/d test.txt 删除以‘.结尾的行 sed /\.$/d test.txt 删除空行 sed /^$/d test.txt 删除重复的空行 sed -e /^$/{n;/^$/d} test.txt 等同于 cat -s test.txt 替换 将每行中的第1个the替换为THE sed s/the/THE/ test.txt 将每行中的第2个l替换为L sed s/l/L/2 test.txt 将文件中所有的the替换为THE sed s/the/THE/g test.txt 就文件中所有的o删除替换为空串 sed s/o//g test.txt 每行开始添加#字符 sed s/^/#/ test.txt 在包含the的每行行首添加#字符 sed /the/s/^/#/ test.txt 在每行末尾添加EOF字符 sed s/$/EOF/ test.txt 将3-5行所有的the替换为THE sed 3,5s/the/THE/g test.txt 将包含the的行中的o替换为O sed /the/s/o/O/g test.txt 迁移 H 复制到剪贴板 gG 将剪贴板中的数据覆盖/追加到指定行 w保存为文件 r读取指定文件 a 追加指定内容 将包含the的行迁移到行尾用于多个操作 H复制到剪贴板---d删除---$G追加到行尾 sed /the/{H;d};$G test.txt 将1-5行迁移到17行后 sed 1,5{H;d};17G test.txt 将包含the的行另存为新文件 sed /the/w out.file test.txt 在包含the每行后添加文件hostname内容 sed /the/r /etc/hostname test.txt 在第3行后插入新行内容为New sed 3aNew test.txt 在包含the的每行后插入新行 sed /the/aNew test.txt 在第3行后插入多行\n 换行符 sed 3aNew1\nNew2 test.txt 将1-5行迁移到17行后 sed 1,5{H;d};17G test.txt 案例搭建ftp脚本 编辑脚本调整vsftpd服务配置禁止匿名用户但允许本地用户也允许写入
nl /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
vim local_only_ftp.sh
#!/bin/bash# 指定配置文件样本路径、配置文件路径
sample/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.confconfig/etc/vsftpd/vsftpd.conf#备份原来的配置文件检测备份文件是否存在不存在进行备份
[ ! -e ${config}.bak ] cp $config ${config}.bak# 将样例文件中的以anonymous_enable开头的行中yes替换为no并覆盖ftp配置文件sed -e /^anonymous_enable/s/YES/NO/g $sample $config#将配置文件中以local_enable和以write_enable开头的行分别替换no为yes
sed -i -e /^local_enable/s/NO/YES/g -e /^write_enable/s/NO/YES/g $config#查看是否有包含listen的行否则在文件末尾添加此行
grep listen $config || sed -i $alistenYES $config# 重启服务并开机自启动查看服务端口号
systemctl restart vsftpd
重启服务
systemctl enable vsftpd
开机自启
netstat -anput vsftpd
netstat -grep vsftpd