【Linux常用命令】之sed命令

Linux常用命令之sed命令

作者简介

听雨:一名在一线从事多年研发的程序员,从事网站后台开发,熟悉java技术栈,对前端技术也有研究,同时也是一名骑行爱好者。
Darren:一个工作经验用了N年的,资深划水人士,除了工作无其他爱好

口号:记录在开发中遇到日常问题、棘手问题的解法和思路

常用命令之sed

背景介绍

sed 是 “stream editor” 的缩写是一款强大的命令行工具,可以对文本文件进行编辑,可以减少很多重复的工作,而且可以避免vi或者vim中由于手滑导致的误操作。

常用参数

参数 解释
-i 直接修改文本内容,而不输出到终端
-e 直接在命令行指定要执行的脚本

参考示例
example.txt

root@master:~/temp# cat example.txt 
Hello World
Hello sed
Hello Unix
My name is Darren
He is TingYu

替换后输出屏幕

这种情况我一般是用于测试的情况,查看是否替换完成

root@master:~/temp/sed# sed 's/Hello/Hi/g' example.txt 
Hi World
Hi sed
Hi Unix
My name is Darren
He is TingYu

直接替换

加上-i参数后直接替换文本内容,做之前请记得备份文件,否则无法还原

root@master:~/temp/sed# sed -i 's/Hello/Hi/g' example.txt 
root@master:~/temp/sed# cat example.txt
Hi World
Hi sed
Hi Unix
My name is Darren
He is TingYu

root@master:~/temp/sed# 

在指定行前增加内容

root@master:~/temp/sed# sed  '1i This is Firstline' example.txt 
This is Firstline
Hi World
Hi sed
Hi Unix
My name is Darren
He is TingYu

root@master:~/temp/sed# 

在指定行后增加内容

root@master:~/temp/sed# sed  '1a This is Second line' example.txt 
Hi World
This is Second line
Hi sed
Hi Unix
My name is Darren
He is TingYu

root@master:~/temp/sed# 

删除行

root@master:~/temp/sed# sed '/Darren/d' example.txt
Hi World
Hi sed
Hi Unix
He is TingYu

删除2~4行

root@master:~/temp/sed# cat -n example.txt    
     1  Hi World
     2  Hi sed
     3  Hi Unix
     4  My name is Darren
     5  He is TingYu
     6
root@master:~/temp/sed# sed '2,4d' example.txt
Hi World
He is TingYu

root@master:~/temp/sed# 

匹配某行在行前增加

root@master:~/temp/sed# sed '/Darren/i In the line before you' example.txt
Hi World
Hi sed
Hi Unix
In the line before you
My name is Darren
He is TingYu

root@master:~/temp/sed# 

匹配某行在行后增加

root@master:~/temp/sed# sed '/Darren/a In the line after you' example.txt
Hi World
Hi sed
Hi Unix
My name is Darren
In the line after you
He is TingYu

root@master:~/temp/sed# 

只替换匹配的第一个值

root@master:~/temp/sed# sed '0,/Hi/s/Hi/Hello/' example.txt
Hello World
Hi sed
Hi Unix
My name is Darren
He is TingYu

root@master:~/temp/sed# 

匹配所有值

root@master:~/temp/sed# sed 's/Hi/Hello/g' example.txt
Hello World
Hello sed
Hello Unix
My name is Darren
He is TingYu

root@master:~/temp/sed# 

-e参数,可以执行多个脚本

root@master:~/temp/sed# sed -e 's/Hi/Hello/g' -e 's/Unix/Linux/g' example.txt
Hello World
Hello sed
Hello Linux
My name is Darren
He is TingYu

root@master:~/temp/sed# 

读取指定行

root@master:~/temp/sed# sed -n '2,4p'  example.txt
Hi sed
Hi Unix
My name is Darren
root@master:~/temp/sed# 

替换指定行的内容

root@master:~/temp/sed# cat -n example.txt
     1  Hi World
     2  Hi sed
     3  Hi Unix
     4  My name is Darren
     5  He is TingYu
     6
root@master:~/temp/sed# sed '2,3c haha' example.txt   
Hi World
haha
My name is Darren
He is TingYu

以上是常用的sed使用方式,分割符是/还可以使用#作为分隔符

总结

sed是强大的文本工具,可以管道符重定向等结合使用,从而达到快、准、狠编辑的效果。

参考:《Linux常用命令自学手册》

相关推荐

  1. Linux命令sed命令

    2024-07-20 19:32:03       19 阅读
  2. linux命令-sed(流编辑器)

    2024-07-20 19:32:03       51 阅读
  3. Linux命令mkdir命令

    2024-07-20 19:32:03       18 阅读
  4. Linuxfirewall最命令

    2024-07-20 19:32:03       40 阅读
  5. Linux命令

    2024-07-20 19:32:03       46 阅读
  6. Linux 命令

    2024-07-20 19:32:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 19:32:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 19:32:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 19:32:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 19:32:03       55 阅读

热门阅读

  1. 简单工厂模式、工厂模式和抽象工厂模式的区别

    2024-07-20 19:32:03       15 阅读
  2. minishell

    minishell

    2024-07-20 19:32:03      13 阅读
  3. Library not found for -lstdc++.6.0.9

    2024-07-20 19:32:03       17 阅读
  4. 在Spring Boot中实现文件上传与管理

    2024-07-20 19:32:03       17 阅读
  5. 掌握Perl中的异常处理:自定义错误管理的艺术

    2024-07-20 19:32:03       15 阅读
  6. Emacs

    2024-07-20 19:32:03       20 阅读
  7. 可再生能源工厂系统 (REPS) - 项目源码

    2024-07-20 19:32:03       18 阅读