西安做网站的公司电话,做网站玩玩,用户界面设计与制作,17网一起做网店普宁池尾一、sed
1.1 sed是什么
sed 是一种流编辑器#xff08;stream editor#xff09;#xff0c;用于对文本数据进行文本转换和处理。它通常被用于在命令行中执行文本编辑任务#xff0c;可以对输入的文本进行搜索、替换、删除等操作#xff0c;并将结果输出。sed 是一个非交…一、sed
1.1 sed是什么
sed 是一种流编辑器stream editor用于对文本数据进行文本转换和处理。它通常被用于在命令行中执行文本编辑任务可以对输入的文本进行搜索、替换、删除等操作并将结果输出。sed 是一个非交互式的文本处理工具它按行逐步处理输入流的数据。
1.2 基本用法
格式
sed [选项] 语法 [标准输入]
sed选项 选项含义-n关闭自动打印-i实际修改文本的内容-r显示扩展正则表达式-i.bak实际修改前先备份源文件-e多点编辑
注意
-ir 不支持 -i -r 支持 -ri 支持-ni 会清空文件 默认打印已输入的内容 查看文件内容 重定向 管道符 1.3 搜索替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符可以是其它形式ss###
替换修饰符
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写 简单用法 高级用法 分组查找替换
格式
sed s//\/ 分组后向引用
提取ens33的IP地址 提取文件的权限要求数字 提取网卡名
echo /etc/sysconfig/network-scripts/ifcfg-ens33 | sed -n s.*/\([^/]*\)$\1p
echo /etc/sysconfig/network-scripts/ifcfg-ens33|sed -nr s#^.*\/(.*)#\1#p
echo /etc/sysconfig/network-scripts/ifcfg-ens33 |sed -nr s^(.*)/([^/])\2p 提取版本号
用sed提
[root CXK /opt] cat test |sed -rn s/.*-(.*).jar/\1/p 用grep提
cat test |grep -e [0-9]\\. 1.4 脚本格式
sed 单引号里面要写脚本
脚本格式如下
1. 不给地址对全文进行处理比如行号
2. 单地址#指定的行$最后一行/pattern/被此处模式所能够匹配到的每一行正则表达式
3. 地址范围#,# #从#行到第#行36 从第3行到第6行#,# #从#行到#行3,4 表示从3行到第7行/pat1/,/pat2/ 第一个正则表达式和第二个正则表达式之间的行#,/pat/ 从#号行为开始找到 pat为止 /pat/,# 找到#号个pat为止
4. 步进~1~2 奇数行2~2 偶数行
sed -n n;p testfile1 #打印偶数行
ed -n 2,${n;p} testfile1字母语法 符号含义p手动打印q提前退出d删除a后面追加i上面插入c替换!取反显示行号 选项关闭自动打印功能 直接显示第三行 显示最后一行 正则表达式 显示范围 匹配两个正则表达式之间的行
基本格式 /表达式1/,/表达式2/p (不要忘记打印)p 文件名 显示从几点几分到几点加分的日志
sed /10:40/,/11:30/p /var/log
删除 追加 取反 1.5 变量 1. 6 修改网卡名
vim /etc/default/grub
GRUB_TIMEOUT5
GRUB_DISTRIBUTOR$(sed s, release .*$,,g /etc/system-release)
GRUB_DEFAULTsaved
GRUB_DISABLE_SUBMENUtrue
GRUB_TERMINAL_OUTPUTconsole
#GRUB_CMDLINE_LINUXcrashkernelauto rd.lvm.lvcentos/root rd.lvm.lvcentos/swap rhgb quiet net.ifnames0
#修改这行
GRUB_DISABLE_RECOVERYtruesed -ri.bak /^GRUB_CMDLINE_LINUX/s#(.*)$#\1 net.ifnames0# /etc/default/grub sed -ri.bak /^GRUB_CMDLINE_LINUX/s#$#net.ifnames0# /etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfg
二、免交互
2.1 多行重定向
cat test tof tee eof 2.2 expecp 要先安装expect软件
rpm -q expect
yum -y install ecpect
格式
expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]
脚本格式
#!/usr/bin/expect
spawn #开启免交互 开启expect
expect #捕捉屏幕上的关键字
exp_continue #继续捕捉屏幕上的字
send #发送指令
insteract #代表退出expect但是会留在新终端
expect eof 代表退出expect ,默认保留10s然后退出 实验1 验证 实验2 总结
1.sed 命令是一个流编辑器可以逐行读取文件也可以执行命令操作因此如果文件过大有必要先将其分割然后再传递给 sed 进程。
2.sed -r 是正则表达式Ⅾ{n}Ⅾ{n,m}Ⅾ的扩展去掉了Ⅾ。
3.使用 -i 命令时一定要先备份尤其是重要文件或做实验确保没有错误后再使用 -i。
4.sed 命令集中于四种功能--添加、删除、更改和检查在脚本中用于更改设置或添加重要文件时特别有效。
5.交互式操作对用户实施单一设置很有用但在面对批量配置时需要脚本访问免交互类型的脚本来解决其实施问题。
6.对于检查工具的使用应修改脚本解释器语句或使用嵌入式但不适合 ssh、su 等能够改变运行环境的嵌入式交互场景命令。
7.编写无交互脚本需要首先考虑交互过程中所有可能的交互要素以保证脚本的实用性和完整性。