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

小鱼儿 2022-03-12 10:15 387阅读 0赞

一、sed简介

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

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

二、sed用法

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

查看

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

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

删除

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

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

添加

  1. sed '/^UUID/ahello' fstab >> fstab文件中UUID开头的行后面加入hello
  2. sed '/^UUID/ahello\nwestos' fstab >> UUID后加入两行
  3. sed '/^UUID/ihello' fstab >> UUID前插入hello
  4. sed '/^UUID/ihello\nwestos' fstab >> UUID前插入两行
  5. sed '1r/mnt/text1' fstab >> 将/mnt/text1中的所有内容添加到fstab的第一行
  6. >> 被定向文件必须写绝对路径
  7. 最加到最后一行可用重定向:echo 'hello' >>fstab

示例:

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

替换

  1. sed '/^#/chello' fstab >> 把以#开头的整行替换为hello
  2. sed '/^#/chello\nwestos' fstab >> 把以#开头的整行替换为两行
  3. sed -ne '/^UUID/=;/^UUID/p' fstab
  4. sed -ne '/^UUID/=;/^UUID/p' fstab | sed 'N;s/\n/ /g'
  5. sed '=' fstab | sed 'N;s/\n/ /g' >> 在全文前加行号
  6. sed 's/#/ /g' fstab >> 将全文的#替换成空格
  7. sed '2,5s/#/ /g' fstab >> 2-5行的#替换成空格
  8. sed '2s/#/ /g' fstab >> 将第2行的#替换成空格
  9. sed '2s/#/ /g;5s/#/ /g' fstab >> 将第二行和第五行的#替换成空格
  10. sed '/Created/,/See/s/#/ /g' fstab >> 将/Create/到/See/行中的#替换成空格
  11. sed 's@/@ @g' fstab >> 将/替换成空格
  12. sed 'G' fstab >> 在每一行后面加回车
  13. 其中 s 代表行, g 代表列

在这里插入图片描述

统计全文行数

  1. [root@allen mnt]# sed -n '$=' fstab
  2. [root@allen mnt]# cat fstab | wc -l

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,387人围观)

还没有评论,来说两句吧...

相关阅读