Linux安全基础—linux三剑客之sed学习
sed简介:
sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。sed是操作,过滤和转换文本内容的强大工具。
sed操作原理:
总结:默认情况下sed会将整个文本的所有内容都读取到它自己的模式空间(pattern space)中,然后使用添加的规则进行匹配,随后会将匹配成功和失败的都会输出到屏幕中(和其他命令只输出匹配成功至屏幕中略有不同),具体如下截图:
原理举例:
sed格式:(sed和awk使用单引号,双引号有特殊解释)
sed [选项] [sed内置命令字符] [输入文件]
sed格式举例:命令 sed -n '2p' sed.txt
常见选项:
常见内置命令字符:
常见匹配范围:
举例说明(可通过如下例子结合上述理论知识学习sed)
例子1:获取sed.txt文件的第2,3行,并只将符合匹配规则的输出到屏幕中(-n选项)
命令:sed -n '2,+3p' sed.txt
例子2:获取sed.txt文件的第2行和第二行下面的第三行,并只将符合匹配规则的输出到屏幕中(-n选项)
命令:sed -n '2,+3p' sed.txt
例子3:获取sed.txt文件的包含“linux”字符的那行,并只将符合匹配规则的输出到屏幕中(-n选项)
命令:sed -n '/linux/p' sed.txt
例子4:获取sed.txt文件的包含“game”字符的那行,并进行删除(磁盘中删除)
命令:sed '/game/d' sed.txt
未添加选项-i参数:删除仅在内存中删除,内容本身还是存在的
添加选项-i参数:内容会从磁盘中删除,内容本身不存在的
**例子5:**获取sed.txt文件中的第二行到结尾的内容,并进行删除(磁盘中删除)
$字符:匹配以$左侧结尾的字符行
命令:sed -i '4,$d' sed.txt
例子6:将sed.txt的"i"字符全部替换成"my"字符(从磁盘中修改)
命令:sed -i 's\i\my\g' sed.txt
**例子7:**将sed.txt的"i"字符全部替换成"my"字符(从磁盘中修改),同时将"qq"替换成"weixin"
命令:sed -i -e 's\my\i\g' sed.txt -e 's\qq\weixin\g'
例子8:在sed.txt中的第二行下面添加一行,内容为"linux is very good"(从磁盘中修改)
命令::sed -i '2a linux is very good' sed.txt
添加多行:可以通过"\n"进行连接
命令: sed -i '2a linux is very good\n123456789' sed.txt
例子9:在sed.txt文件中下面的每一行添加数据
命令:sed -i 'a ------' sed.txt
案例练习:
案例1:取出网卡ens33的IP地址
命令:ifconfig ens33 | sed -n '2p'