Linux命令集合

Linux_066_sed练习题2

2022-02-28  本文已影响0人  为宇绸缪

以后再配图

替换文件的root为yu,只替换一次,与替换所有
sed 's/root/yu/p' pwd2.txt -n
sed 's/root/yu/gp' pwd2.txt -n

替换文件所有的root为yu,且仅仅打印替换的结果
sed 's/root/yu/gp' pwd2.txt -n

替换前10行bin开头的用户,改为C,且仅仅显示替换的结果
sed -n "1,10s/^bin/C/gp" pwd2.txt

替换前10行b开头的用户,改为C,且将m开头的行,改为M,且仅仅显示替换的结果
sed -n -e "1,10s/^b/C/pg" -e "1,10s/^m/M/gp" pwd2.txt

删除4行后面所有
sed '5,$d' pwd2.txt

删除从root开始,到ftp之间的行
sed '/root/,/ftp/d' pwd2.txt

将文件中空白字符开头的行,添加注释符
匹配开头然后替换注释符,后面是替换空行
sed -e 's/^[[:space:]]/#/g' -e 's/^$/#/g' test.txt

删除文件的空白和注释行
;代表前一个语句结束,开始下一个语句
sed '/^/d;/^#/d' test.txt sed -e '/^#/d' -e '/^/d' file

给文件前三行,添加#@符号
sed '1,3s/(^.)/#\1/g' test.txt
1,3s替换1到3行内容
(^.)
()分组 ^.匹配第一个字符放入第一个组中,后面用\1引用分组的结果
结论:找出前三行的内容,替换第一个字符为@,即在前3行开头,添加注释符
sed -r '1,3s/(^.)/@\1/g' test.txt

sed取出ip地址
多次管道符编辑(前后替换为空)
ifconfig eth0 |sed -n '2p' | sed 's/^.inet//' | sed 's/netmask.//'

ifconfig eth0 | sed '2s/^.inet//;s/netmask.//p' -n
ifconfig eth0 把所有的内容取出来
sed 2s 对第二行进行处理,然后把inet开头,netmask结尾的给替换成空

ifconfig eth0 | sed -e '2s/^.inet//' -e 's/netmask.//p' -n

利用分组功能,引用ip地址
ifconfig eth0 | sed -n '2p' | sed -r 's/^.inet(.)netmask.*/\1/'

sed支持扩展正则 -r参数
ifconfig eth0 | sed -r -n '2s/.inet (.)netmask.*/\1/p'

找出系统版本
cat /etc/centos-release
sed -r -n 's/.release[[:space:]]([^.]+).*/\1/p' /etc/centos-release

[[:space:]]* 匹配多个空格
[^.]+ 贪婪匹配
sed -r -n 's/.*release[[:space:]]*([.]+)./\1/p' /etc/centos-release
sed -r -n 's/^.
release[[:space:]]([.0-9]+)./\1/p' /etc/centos-release

上一篇下一篇

猜你喜欢

热点阅读