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 代表列
统计全文行数
[root@allen mnt]# sed -n '$=' fstab
[root@allen mnt]# cat fstab | wc -l
还没有评论,来说两句吧...