shell编程教学(三)| Linux三剑客之sed

一、sed简介

SED是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。

sed:实现数据的替换,删除,增加,选取等(以行为单位进行处理)

二、sed用法

注意,sed命令不加 -i 不会修改源文件,一般不要加 -i,如果需要利用sed命令显示出来的内容,可以考虑使用重定向!

查看

 sed -n  /^#/p fstab			       >> 所有以#开头的行
 sed -n  '/^#/!'p fstab     		   >> 所有不以#开头的行
 
 cat -n fstab | sed -n '2,6p'           >> 查看2-6行
 cat -n fstab | sed -n '6p'             >> 只看第六行
 cat -n fstab | sed -n -e '6p' -e '2p'  >> 只看第6行和第2行
 cat -n fstab | sed -n -e '6p;2p'       >> 只看第6行和第2行
 cat -n fstab | sed -n -e '2,6!p'       >> 看2,6行以外的行

示例:
在这里插入图片描述

删除

 sed '/^UUID/d' fstab      >> 删除UUID开头的行
 sed '/^UUID/!d' fstab     >> 删除UUID开头以外的行
 sed '/^#/d' fstab         >> 删除#开头的行
 sed '/^$/d' fstab         >> 删除开头就是结尾的行(空格行)
 sed '1,4d' fstab          >> 删除1-4行

示例:
在这里插入图片描述

添加

 sed '/^UUID/ahello' fstab   >> 在fstab文件中UUID开头的行后面加入hello
 sed '/^UUID/ahello\nwestos' fstab >> UUID后加入两行

 sed '/^UUID/ihello' fstab   >> 在UUID前插入hello
 sed '/^UUID/ihello\nwestos' fstab  >> 在UUID前插入两行

 sed '1r/mnt/text1' fstab     >> 将/mnt/text1中的所有内容添加到fstab的第一行
                              >> 被定向文件必须写绝对路径

最加到最后一行可用重定向:echo 'hello' >>fstab

示例:

之后加
在这里插入图片描述
之前加
在这里插入图片描述

替换

 sed '/^#/chello' fstab    		>> 把以#开头的整行替换为hello
 sed '/^#/chello\nwestos' fstab 	 >> 把以#开头的整行替换为两行

 sed -ne '/^UUID/=;/^UUID/p' fstab
 sed -ne '/^UUID/=;/^UUID/p' fstab | sed 'N;s/\n/ /g'

 sed '=' fstab | sed 'N;s/\n/ /g'  	>> 在全文前加行号
 sed 's/#/ /g' fstab        		>> 将全文的#替换成空格
 sed '2,5s/#/ /g' fstab     		>> 将2-5行的#替换成空格
 sed '2s/#/ /g' fstab       		>> 将第2行的#替换成空格
 sed '2s/#/ /g;5s/#/ /g' fstab  	>> 将第二行和第五行的#替换成空格
 sed '/Created/,/See/s/#/ /g' fstab  	>> 将/Create/到/See/行中的#替换成空格
 sed 's@/@ @g' fstab        		>> 将/替换成空格
 sed 'G' fstab              		>> 在每一行后面加回车

			其中 s 代表行, g 代表列

猜你喜欢

转载自blog.csdn.net/weixin_44297303/article/details/88195427