sed 【Stream EDitor 流编辑器】 【行编辑器,逐行处理,把处理的结果保存在内存空间(模式空间),在内存中完成编辑,把结果输出。默认不编辑原文件,仅仅对模式空间中的数据做处理,然后处理结束后,将模式空间打印至屏幕】
语法: sed [选项] ‘AddressCommand‘ file... 【选项】 -n:静默模式(不显示模式空间中的内容) -i:直接修改原文件 -e:脚本1 -e 脚本2 :可以同时执行多个脚本 -f /path/to/sed_脚本 sed -f /path/to/scripts file -r: 表示使用扩展正则表达式 【Address】 1)起始行,结束行,$:表示最后一行 2)/正则表达式/ 3) /模式1/,/模式2/ :第一次被模式1匹配到的行开始----第一次被模式2匹配到的行结束,这中间的所有行 4)指定的行 5)开始行,+N :从开始行向后的N行(N+1行) 【命令】 d:删除符合条件的行 p:显示符合条件的行 a \字符串:在指定的行后追加新行 i \字符串:在指定的行前面添加新行 r file :在指定文件内容添加至符合条件的行处 w file: 在指定范围内的内容另存至指定的文件中 s /正则表达式/字符串/[修饰符] :查找并替换,模式只替换每行中第一次被模式匹配到的字符串 [修饰符] -g:全局替换 -i : 忽略字符大小写 示例 1,删除文件中1到3行 [[email protected] ~]# sed ‘1,3d‘ /etc/a.txt 2,删除包含"dev"的行 [[email protected] ~]# sed ‘/dev/d‘ /etc/a.txt 3,删除指定行"1"行+后2行(总计3行) [[email protected] ~]# sed ‘1,+2d‘ /etc/a.txt 4,只删除第一行 [[email protected]~]# sed ‘1d‘ /etc/a.txt 5,删除以#号开始的行 [[email protected] ~]# sed ‘/^#/d‘ /etc/a.txt 6,仅显示有字符串"dev"的行 [[email protected] ~]# sed -n ‘/dev/p‘ /etc/a.txt 7,在所有行后面加上字符串"xxx" [[email protected] ~]# sed ‘1,$\a xxx‘ /etc/a.txt [[email protected] ~]# sed ‘/^\//a \###‘ /etc/a.txt 8,在以/前面添加新行,内容为### [[email protected] ~]# sed ‘/^\//i \###‘ /etc/a.txt 9,在文件的最后追加b.txt文件 [[email protected] ~]# sed ‘$r /etc/b.txt‘ /etc/a.txt 10,在a.txt文件中查找以"/dev"字符串的行保存至b.txt文件中 [[email protected] ~]# sed ‘/dev/w /tmp/c.txt‘ /etc/a.txt 11,在a.txt文件中行首的/替换成# [[email protected] ~]# sed ‘s/^\//#/g‘ /etc/a.txt [[email protected] ~]# sed -i ‘s/20/30/g‘ /etc/hosts 12,&:引用模式匹配整个字符串 [[email protected] ~]# cat /tmp/a.txt love like [[email protected] ~]# sed ‘[email protected]@&[email protected]‘ /tmp/a.txt [[email protected] ~]# sed ‘[email protected]\(l..e\)@\[email protected]‘ /tmp/a.txt lover liker [[email protected] ~]# sed ‘[email protected]\(..e\)@L\[email protected]‘ /tmp/a.txt Lover Liker 13,删除history命令行首的空白处 [[email protected] ~]# history | sed ‘s/^[[:space:]]//g‘ 14,删除文件中行首的空白符 [[email protected] sh]# sed -r ‘s/^[[:space:]]+//g‘ /etc/grub2.cfg 15.删除文件中的空白行 [[email protected] sed]# sed ‘/^$/d‘ sed.txt 16,删除以#号开头的行 [[email protected] sed]# sed ‘s/#//g‘ sed.txt 17.删除行首为空白字符的行 [[email protected] sed]# sed -r ‘s/^[[:space:]]+//g‘ sed.txt 18.查找父目录 [[email protected] ~]# echo "/etc/rc.d" | sed -r ‘s#^(/.*/)[^/]+/?#\1#g‘ /etc/
THE END
原文地址:https://www.cnblogs.com/xiaofu89120/p/12239301.html
时间: 2024-09-28 09:28:13