文章目录
- 一、sed基本选项与命令
- 二、sed的练习与使用
- 1.sed取出/etc/passwd文件的第一列
- 2.sed将PATH环境变量中的冒号换成换行 ->可以将PATH变量的内容重定向到一个文件里,例如path.txt
- 3.sed将PATH环境变量斜杠/换成斜杠\
- 4.sed修改SELINUX配置文件从开启(enforcing)变成禁用(disabled)/etc/sysconfig/selinux
- 5.去掉/etc/passwd文件中第二个字段的x
- 6.将/etc/sysconfig/network-scripts/ifcfg-ens33里的ONBOOT=no修改为yes或者修改下IPADDR后面的ip地址,具体ip自己定义
- 7.只显示ip add的ip地址
- 8.复制/etc/ssh/sshd_config到当前目录下,修改里面的端口号修改为8899(将#Port 22 配置修改为Port 8899 要求去掉前面的#号,将22修改为8899)
- 9.给下列含有大写字母的行,在大写字母后追加数字2020 --》sed
一、sed基本选项与命令
sed的基本功能是用来查找和替换文本。
sed 循环 一行一行的处理文件 行处理
sed -n '/abc/p' file 默认会打印模式空间的内容
行中匹配abc的打印出来 -r 支持扩展分割符
-n不让他默认打印模式空间
sed root@10.0.2.253 sed 's/abc/def' file 远程登录后修改file里的内容
sed -n '5p' file 把第五行打印出来
sed -n '$p' file 把最后一行打印出来
sed -n '1,3p' file 把一到三行打印出来
sed -n '1,~3p' file 从第一行开始打印三行
sed -i '3i aaaaaaa' file 在第三行的前面加上aaaaaaa
sed -i '$a aaaaa' file 在最后行加入aaaaa
sed -i '/^tom/i aaaaaa' file 在以tom开头的行前一行加上aaaaaa
sed -i 's/abc/def/' file 改每一行的第一个abc成def
sed -i 's/abc/def/g' file 改每一行的所有abc成def
sed -i 's/abc/def/3' file 改每一行的第三个abc成def
sed -i '1,2s/abc/def/' file 改一到两行abc成def
s 换匹配的字段 c换匹配的行
sed -i '1,2s/^.*$/def/' file 改一到两行成def
sed -i '4c aaaaaaaaa' file 把第四行改为aaaaaaaa
sed -i '/^SELINUX/c selinux ' 把所有以SELINUX开头的行改为selinux
sed -i '4d' 把第四行删除
sed -i '/^tom/d' file 删除以tom开头的所有行
sed -i '/^$/d' file 删除空行
sed -i '/^\s$/d' file 删除开头为空行\s表示空格或tab
sed -i '/^abc/s/tom/jerry/' file 先找到以abc开头的行将这一行的tom改为jerry
sed -i '/^mike/s/^/#' file 将mike行注释
sed -n '1p; 3p' file 打印第一行和第三行
sed -i -e '1s/jerry/tom/; -e 3s/mike/xyz/' file 多条一起执行用-e
sed -i '/abc/,/^def/s/123/456/' file 将abc开头的行和def开头的行之间的行的123改为456
sed -n '1,/def/p' file 从第一行开始直到碰到def的行全部打印出来
二、sed的练习与使用
1.sed取出/etc/passwd文件的第一列
sed -n 's/:/\n/p' passwd | sed -n '1~2p'
2.sed将PATH环境变量中的冒号换成换行 ->可以将PATH变量的内容重定向到一个文件里,例如path.txt
sed -n 's#:#\n#gp' path.txt
3.sed将PATH环境变量斜杠/换成斜杠\
sed -i 's/\//\\/g' path.txt
4.sed修改SELINUX配置文件从开启(enforcing)变成禁用(disabled)/etc/sysconfig/selinux
sed -i '/^SELINUX=/ s/enforcing/disabled/' config
5.去掉/etc/passwd文件中第二个字段的x
sed -i '/:x:/ s/x//' passwd
6.将/etc/sysconfig/network-scripts/ifcfg-ens33里的ONBOOT=no修改为yes或者修改下IPADDR后面的ip地址,具体ip自己定义
sed -i '/ONBOOT=no/ s/no/yes/' ifcfg-ens33
7.只显示ip add的ip地址
ip add |sed -nr "/[0-9]{1,3}(\.[0-9]{1,3}){3}/p" |sed "s/inet //" |sed "s/\/.*//"
8.复制/etc/ssh/sshd_config到当前目录下,修改里面的端口号修改为8899(将#Port 22 配置修改为Port 8899 要求去掉前面的#号,将22修改为8899)
sed -i "s/#Port 22/Port 8899/g" sshd_config
9.给下列含有大写字母的行,在大写字母后追加数字2020 --》sed
abcdSdddde
islHishbxld
goBkefji
daanshXxge
sed -rn 's/[A-Z]/&2020/gp' alpha.txt