建设网站用什么软件下载,洪山网页设计,郑州制作网站,seo优化排名易下拉用法一、sed编辑器
■ sed是一种流编辑器#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的—组规则来编辑数据流
■ sed编辑器可以根据命令来处理数据流中的数据#xff0c;这些命令要么从命令行中输入#xff0c;要么存储在一个命令文本文件中
1、sed的工作流程主要…一、sed编辑器
■ sed是一种流编辑器流编辑器会在编辑器处理数据之前基于预先提供的—组规则来编辑数据流
■ sed编辑器可以根据命令来处理数据流中的数据这些命令要么从命令行中输入要么存储在一个命令文本文件中
1、sed的工作流程主要包括读取、执行和显示三个过程: 读取: sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间pattern space ) 执行: 默认情况下所有的sed命令都在模式空间中顺序地执行除非指定了行的地址否则sed命令将会在所有的行上依次执行 显示: 发送修改后的内容到输出流。在发送数据后模式空间将会被清空。在所有的文件内容都被处理完成之前上述过程将重复执行直至所有内容被处理完
在所有的文件内容都被处理完成之前上述过程将重复执行直至所有内容被处理完
注意:默认情况下所有的sed命令都是在模式空间内执行的因此输入的文件并不会发生任何变化除非是用重定向存储输出 2、sed命令格式 1.sed -e 操作 文件1 文件2 ... 2.sed -n -e 操作文件1 文件2 ... 3.sed -f 脚本文件 文件1 文件2 ... 4.sed -i -e 操作 文件1 文件2 ... sed -e n{ 操作1 操作2 ... }’ 文件1 文件2 ... 3、常用选项
选项作用-e表示用指定命令来处理输入的文本文件只有一个操作命令时可省略一般在执行多个操作命令使用-n关闭自动打印一般和p一起使用-r使用扩展正则表达式-i直接修改文件内容建议先备份-i.bak备份文件会产生一个源文件.bak的文件
4、常用操作
选项含义p手动打印 例3p,打印到第三行q提前退出例3q,到第三行退出d删除例3d删除第三行a指定例3ahh在第三行后加入hhi上面插入例3ihh在第三行前插入hhc替换例3chh将第三行替换成hh显示行号
二、打印内容 sed -n p test #按顺序打印出内容 sed -n test sed -n -e -e p test打印出内容并显示行号-e的用法用于执行多个操作命令的时候使用 三、过滤
sed编辑器有2种过滤方式
以数字形式表示行区间用文本模式来过滤出行
以数字形式表示行区间 sed -n 1p test #过滤并打印出第一行的内容 sed -n $p test #打印最后一行 sed -n 1,3p test #打印出第一排到第三排的内容 sed -n n;p test 打印出偶数行n表示移动到下一行 sed -n p;n test 打印出奇数行n表示移动到下一行 sed -n 2,${n;p} test 从第二行开始执行但不包括第二行 用文本模式过滤出行 sed -n /user/p /etc/passwd #过滤出含有user的行 sed -n /^a/p /etc/passwd #打印出以a为开头的行 sed -n /bash$/p /etc/passwd #打印出以bash结尾的行 sed -n /ftp\|root/p /etc/passwd #打印出含有/root或者/ftp的行 sed -nr /ftp|root/p /etc/passwd #或者加r代表支持正则表达式 sed -n 2,/ftp/{;p} /etc/passwd #从第2行开始打印直到打印出ftp 四、删除 sed 2d test #删除第2行 sed 2,4d test #删除2-4行 sed $d test #删除最后一行 sed /^$/d test #删除空格 sed d test #全部删除 sed /d$/d test #删除以d结尾的行 sed /d$/!d test #取反删除除了以d结尾的行 sed /a/,/c/d test #删除从a开头的到c开头的不论a-c之间有多少行都会被删除直到匹配不到为止 五、搜索替代
格式sed 行范围 s/旧字符串/新字符串/替换标记
4种替换标记:
数字: 表明新字符串将替换第几处匹配的地方g: 表明新字符串将会替换所有匹配的地方P: 打印与替换命令匹配的行与-n一起使用w 文件: 将替换的结果写到文件中 sed -n s/root/admin/p /etc/passwd #在etc/passwd里root替换成admin默认更换一个root sed -n s/root/admin/2p /etc/passwd #2p表面要替换这行的第几个匹配的地方 sed -n s/root/admin/gp /etc/passwd #替换到全局所有的root修改全局后面加g sed s/root//g /etc/passwd #删除当前行含有的所有root sed -n s/r..t/er/g test #将test里凡是带r..t的字段后面都加上er 六、插入 sed ’/aa/c xxx test #将第一行的aa替换成xxxc默认是替换第一行 sed 3c hhh test #将第三行全部替换成hhh sed 1,3a 6666 test #在1-3行的下面增加6666 sed 1,3i 6666 test #在1-3行上面增加6666 sed 2r /opt/hyh test #r读入在第二行下面读入opt下的hyh文件内容 七、变量 sed -nr /$name/p /etc/passwd 提取变量用户名 变量需要加双引号 八、分组调用
只有扩展正则表达式才能支持分组。
分组使用调用第一段使用\1 echo 11aaxx |sed -r s/(11)(aa)(xx) /\1/ #调用第一组 11 echo 11aaxx |sed -r s/(11)(aa)(xx) /\2/ #调用第二组 aa echo 11aaxx |sed -r s/(11)(aa)(xx) /\1\2/ #调用第一、二组 11aa echo 11aaxx |sed -r s/(11)(aa)(xx) /\1\2\3/ #调用所有分组 11aaxx 提取ip地址 ifconfig ens33 |sed -rn 2s/.*(inet) ([0-9.]) (netmask) ([0-9.]) (broadcast) ([0-9.]).*/\2/p 192.168.116.40 -rn :使用扩展正则表达式要用-r 2s/取第二行 .*(inet):取第一组 代表不管后面有多少个都显示 免交互
1.多重重定向
cat EOF #手动往EOF里添加内容
cat EOF test #把EOF里添加的内容加进test里
tee自带重定向功能
tee 2.test #将手写内容加入2.test文件里 2.expect
要先yum安装expect
制作免交互脚本传文件 基本命令 1.脚本解释器 expect 脚本中首先引入文件表明使用的事哪一种shell #/usr/bin/expect 2.spawn spawn 后面通常跟一个Linux执行命令表示开启一个会话、进程并跟踪后续交互信息 后面加 命令 3.expect 判断上次输出结果中是否包含指定的字符串如果有则立即返回否则就等待超时时间后返回只能捕捉有swpan启动的进程输出 用于接受命令执行后的输出然后和期望的字符串匹配 4.send 向进程发送字符串用于模拟用户的输入该命令不能自动回车换行一般要加 \r (回车) 或者\ n 5.结束符 expect eof 表示交互结束等待执行结束退回到原用户与spawn对应 6.set expect 默认的超时时间是10秒通过set 命令可以设置会话超时时间若不限制超时时间则应设置为-1 7.exp_continue exp_continue 表示允许 expect 继续向下执行指令. exp_continue附加于某个expect 判断选项之后可以是该项被匹配后还能继续匹配expect 判断语句内的其他项。exp_continue类似于控制语句的continue语句。表示允许expect继续向下执行命令。 8.send_user 表示回显命令与echo相同