Linux sed 命令
2023-09-11 14:16:49 时间
Linux sed 命令
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e<script>或--expression=<script> 允许对输入数据应用多条 sed 命令编辑
- -f<script文件>或--file=<script文件>从 sed 脚本中读入 sed 操作。和 awk 命令的-f 非常类似。
- -h或--help 显示帮助。
- -n或--quiet或--silent 仅显示script处理后的结果。
- -r在 sed 中支持扩展正则表达式。
- -i: 用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
注:a c i 插入多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结。
对 sed 命令大家要注意,sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,这种情况连文件都没有),而是把修改结果只显示到屏幕上,除非使用“-i”选项才会直接修改文件。
1.查看指定行
[root@iZ1la3d1xbmukrZ ~]# cat student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]# sed -n '2p' student.txt 1 Lm 82 95 86 87.66 [root@iZ1la3d1xbmukrZ ~]#
2.删除2-4行(对本身文件不修改)
[root@iZ1la3d1xbmukrZ ~]# sed '2,4d' student.txt ID Name PHP Linux MySQL Average [root@iZ1la3d1xbmukrZ ~]# cat student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]#
3.添加数据
[root@iZ1la3d1xbmukrZ ~]# sed 2a\hello student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 hello 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]# sed '2i hello \ > world' student.txt ID Name PHP Linux MySQL Average hello world 1 Lm 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66
4.替换数据
[root@iZ1la3d1xbmukrZ ~]# cat student.txt | sed '2c No such person\ No such person ' ID Name PHP Linux MySQL Average No such person No such person 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]#
5 字符串替换
“c”动作是进行整行替换的,如果仅仅想替换行中的部分数据,就要使用“s”动作了。s 动作的格式是:
[root@localhost ~]# sed ‘s/旧字串/新字串/g’ 文件名
直接进行简单替换
[root@iZ1la3d1xbmukrZ ~]# sed 's/74/99/g' student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 2 Sc 99 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]#
正则进行替换
[root@iZ1la3d1xbmukrZ ~]# cat student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]# sed '4s/^/#/g' student.txt ID Name PHP Linux MySQL Average 1 Lm 82 95 86 87.66 2 Sc 74 96 87 85.66 #3 Tg 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]#
执行多个替换
[root@iZ1la3d1xbmukrZ ~]# sed -e 's/Lm//g ; s/Tg//g' student.txt ID Name PHP Linux MySQL Average 1 82 95 86 87.66 2 Sc 74 96 87 85.66 3 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]# sed -e 's/Lm//g > s/Tg//g' student.txt ID Name PHP Linux MySQL Average 1 82 95 86 87.66 2 Sc 74 96 87 85.66 3 99 83 93 91.66 [root@iZ1la3d1xbmukrZ ~]#
“-e”选项可以同时执行多个 sed 动作,当然如果只是执行一个动作也可以使用“-e”选项,但是这时没有什么意义。还要注意,多个动作之间要用“;”号或回车分割。
相关文章
- Linux下使Shell 命令脱离终端在后台运行
- Linux中使用sed命令或awk命令修改常规配置文件
- linux 【监控】top命令详解
- 试试Linux下的ip命令,ifconfig已经过时了
- Linux 进程必知必会
- linux中加载驱动程序的命令以及加载方式过程分析
- Linux自学篇——linux命令英文全称及解释
- Linux命令之fdisk
- LINUX下目标文件的BSS段、数据段、代码段
- Ip- Linux必学的60个命令
- linux sed命令详解
- Linux sed命令在指定行前后添加内容
- Linux_awk命令详解
- Linux su命令:su命令语法、su root与su - root区别、su与sudo区别、su -c 参数的使用理解
- Linux命令:如何将多个文件及文件夹压缩为一个压缩文件及解压 - tar命令、将一个文件移动到另一个目录下 - mv命令、删除文件夹和文件的命令 - rm命令
- Linux crontab 命令格式与具体样例
- Linux学习笔记(21)linux查看系统状态
- Linux学习笔记(2)linux系统信息与进程相关命令
- Linux下chkconfig命令详解
- Linux下history命令详解---转载
- Linux - 使用objcopy命令修改符号的作用域避免同名符号冲突
- Linux-Systemd
- Linux 进程管理命令