Linux文本三剑客之sed----sed 擅长取行和修改
  lxSY9k0Slakj 2023年12月06日 11 0

1.简述

sed是一种流编辑器,作用是实现对文件的增删改查,它一次处理一行内容。

sed [option]... 'script' inputfile

sed            流编辑器,实现对文件的增删改查

option  选项:

-n             屏蔽默认输出

-i             直接修改源文件

-e             可指定多个处理动作

-r             支持扩展表达式

{}             可组合多个命令,以;分隔

-f             使用sed脚本

定址符:

p              打印行

d              删除行

s              字符串替换

1              对第1行处理

1,3            对第1到3行处理

1,+3           对第1行后面3行处理

1~2            对1,3,5,7……行处理

1,$            对1行到最后1行处理

/aa/,/bb/      对a行到b行处理

/aaa/,9        对a行到第9行,若前9行没有,会显示后9行匹配的行

2.实战:

(注意:sed增删改如果不加 -i 选项的话只是预览模式,并没有真的增删改)

2.1 增:

i    行前插入       

a    行后插入

sed -i '2ixx' m.txt              在第2行前插入行xx

sed -i '3,6ixx' m.txt            在第3-6行每行前插入xx

sed -i '2axx' m.txt              在第2行后插入xx

sed -i '/^yy/axx' m.txt          在yy开头的行后插入xx

2.2 删:

sed -i '3,5d' a.txt              删除第3到5行

sed -i '/xml/d' a.txt            删除所有包含xml的行

sed -i '/xml/!d' a.txt           删除不包含xml的行

sed -i '/^xml/d' a.txt           删除以xml开头的行

sed -i '$d' a.txt                删除最后1行

sed -i '/^$/d' a.txt             删除所有空行

sed -i '/^$/{n;/^$/d}' a.txt     删除重复空行,连续两个空行只保留一个

sed -i -r'/a|b/d' a.txt          删除a或b的行

sed -i '2,~2d' a.txt             删除2行到2的倍数行

2.3 改

(加-i选项才会真的修改源文件):

c    行替换

s    字符串替换

g    global(全局替换)

sed -i '2cxx' m.txt              第2行替换成xx

sed -i '3,6cxx' m.txt            第3到6行替换成1行xx

sed -i -e '3cxx' -e '6cxx' m.txt 第3行和第6行替换成xx

sed -i '2cxx\nyy' m.txt          第2行替换成xx并换行写上yy(\n代表换行)

sed -i 's/test/demo/g' a.txt     将所有的test换成demo(常用)

sed -i 's/#ipv6=no/ipv6=yes/g' test.txt    将test.txt文件里的#ipv6=no改成ipv6=yes(sed的这种用法经常用来更改配置文件里的内容)  

sed -i 's/a//g' a.txt            删除所有行的a

sed -i '4,7s/^/#/' a.txt         4到7行加#号

sed -i '4,7s/^#//' a.txt         4到7行去掉#号

sed -i 's/a/B/ig' a.txt          所有行的a替换成B(不区分大小写)

2.4 查:

sed –n ’20,30p’ b.txt         打印20到30行

sed -n '3p;6p'  a.txt         打印第3和6行

sed -n '3,+6p'  a.txt         打印第3行及其后6行

sed -n '/^bin/p' a.txt        打印以bin开头的行

sed -n 'p;n' a.txt            打印奇数行,n表示读下一行(隔行)

sed -n 'n;p' a.txt            打印偶数行,n表示读下一行(隔行)

sed -n '8,${n;p}' a.txt       打印8行到末尾所有的偶数行

sed -n '$=' a.txt             打印文件的行数

sed -n '/a/{=;p} ' b.txt      显示行号

sed -n l aaa.jpg              打印不可见字符

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月06日   12   0   0 sedlinux数据
  uvM09mQNI0hF   2023年11月19日   19   0   0 sedshell字符串
  eHipUjOuzYYH   2023年12月06日   15   0   0 sedbootstrapIPV6
  jnZtF7Co41Wg   2023年12月11日   15   0   0 文件系统xmlGNU
  xIUntf9oR6GI   2023年11月28日   13   0   0 sedvim基础命令
  oIa1edJoFmXP   2023年11月24日   13   0   0 AppsedVue
  4Txe79BjyroE   2023年12月10日   15   0   0 xmlSOAP