Linux命令之sed命令

在写一些bash小脚本的时候,常用的命令有sed和awk等,写一篇记录文章如下:

命令简介:

Sed命令是利用脚本来处理文本文件。sed可依照脚本的指令来处理,编辑文本文件,sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。而对文件的操作无非就是“增删改查”,如何使用好sed命令是写自动化脚本的必须基础之一

sed遵循的简单的工作流:

1.读取(从输出中读取某一行)

2.执行(在某一行执行sed命令)

3.显示(把结果显示在输出中)
默认是显示修改后的内容,不会修改原文件,除非使用 -i 参数

常用参数及命令

sed [-efni] 'command' test.txt (尽量按照标准格式使用单引号)

 

以下为列出部分命令和动作:

sed

 

处理文本文件,并输出到标准输出(控制台)

 

command

 

 

-e

可以指定多个命令

 

a

新增

 

-f

指定命令文件

 

c

替换

 

-n

取消默认控制台输出,与p一起使用可打印指定内容

 

d

删除

 

-i

输出到原文件,静默执行(修改原文件的意思)

 

i

插入

 

 

 

 

p

打印,要和-n参数一起使用

 

 

 

 

s

替换(匹配局部替换)

动作:

新增 a

sed '1a testContent' test.txt

在第1行后面新增一行内容,不指定数字,为每一行的后面都新增一行指定内容

sed '1,3a testContent' test.txt

在原文的第 1~3 行后面各新增一行内容

替换 c

sed '2c testContent' test.txt

将第 2 行内容整行替换,不指定数字,则将每一行都替换成指定内容(效果同正则符号.相同)

sed '1,3c testContent' test.txt

将第 1~3 行内容替换成一行指定内容

删除 d

sed '2d' test.txt

删除第 2 行,不指定数字,则将每一行都删除

sed '1,3d' test.txt

删除第1~3行

插入 i

sed '2i testContent' test.txt

在第 2 行前面插入一行内容,不指定数字,为每一行的前面都新增一行指定内容

sed '1,3i testContent' test.txt

在原文的第 1~3 行前面各插入一行内容

打印 p

sed '2p' test.txt

重复打印第 2 行,不指定数字,则将每一行都重复打印一遍

sed '1,3p' test.txt

重复打印第1~3行

sed -n '2p' test.txt

只打印第 2 行

sed -n '1,3p' test.txt

只打印第 1~3 行

sed -n '/user/p' test.txt

打印匹配到user的行,类似grep

sed -n '/user/!p' test.txt

! 反选,打印没有匹配到user的行

sed -n 's/old/new/gp' test

只打印匹配替换的行

替换 s

sed 's/old/new/' test.txt

匹配每一行的第一个old替换为new

sed 's/old/new/gi' test.txt

匹配所有old替换为new,g 代表一行多个,i 代表匹配忽略大小写

sed '3,9s/old/new/gi' test.txt

匹配第 3~9 行所有old替换为new

参数 -e

sed -e 's/系统/00/g' -e '2d' test.txt

执行多个指令

参数 -f

sed -f ab.log test.txt

多个命令写进ab.log文件里,一行一条命令,效果同-e

 

部分正则表达式:

^     在每一行的开头添加指定数据   sed 's/^/hello/g'

$     在每一行的结尾添加指定数据   sed 's/$/over/g'

\      转义特殊字符     sed 's/\*/\%/g'

# 当/符号和需要替换的字符冲突时可以使用 sed 's#/#hello#g'

. 匹配任意一个字符,除了换行符,但需要注意的是,在sed中不能匹配换行符,但是在awk中可以匹配换行符。类似于shell通配符中“?”,匹配任意一个字符

*  表示前边的字符有0个或多个,*表示一个字符有0个或多个,也就是能匹配任意字符,类似shell通配符中的“*”,可以匹配任意字符

以下为优秀的详细介绍该命令的文章:

sed -i命令详解及入门攻略

sed命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sed是一个强大的文本处理工具,常用于从标准输入或文件中读取文本,进行编辑和转换,并将输出写入标准输出或文件中。 以下是sed常用的命令选项: 1. -n:只显示经过sed编辑的行 2. -i:直接修改文件内容,不输出到终端 3. -e:允许多个命令一起执行 4. -f:从文件中读取sed命令进行处理 以下是sed常用的命令: 1. s:替换。语法为:s/要替换的内容/替换后的内容/g,其中g表示全局替换。 2. p:打印。将指定的行或所有行输出到终端。 3. d:删除。删除指定的行或所有行。 4. a:追加。在指定行后面添加新的内容。 5. i:插入。在指定行前面插入新的内容。 6. w:写入。将指定行写入到文件中。 举例说明: 1. 将文件中的所有"cat"替换为"dog":sed -i 's/cat/dog/g' file.txt 2. 只显示文件中包含“hello”的行:sed -n '/hello/p' file.txt 3. 删除文件中的第3行:sed -i '3d' file.txt 4. 在文件中第2行后面添加一行内容:“hello world”:sed -i '2a hello world' file.txt 5. 将文件中第1行替换为“hello”并保存到另一个文件中:sed '1s/.*/hello/' file.txt > newfile.txt ### 回答2: sed是一种常用的Linux命令,其全称为Stream Editor,用于对文本进行处理和转换。它可以在命令行中以各种方式对文件内容进行修改,包括替换、插入、删除、追加等操作。 sed的基本语法是`s/old/new/`,其中old表示待替换的字符串,new表示替换后的内容。sed命令会读取文件的内容,并对匹配到的old进行替换。如果需要对整个文件进行替换,则需要加上选项`-i`。 除了替换以外,sed还可以实现很多其他的文本操作。例如,通过`d`选项可以删除匹配到的行;通过`i`选项可以在指定行前插入文本;通过`a`选项可以在指定行后追加文本等。 另外,sed命令还可以使用正则表达式来进行模式匹配。通过在替换语句中使用正则表达式,可以对符合特定模式的字符串进行批量替换。 总之,sed是一种非常强大和灵活的文本处理工具,可以方便地对文件内容进行修改和转换,提高工作效率。熟练掌握sed命令可以帮助我们更好地处理和编辑文本文件。 ### 回答3: sed(Stream Editor)是Linux中常用的文本处理工具之一。它可以对文本进行流式编辑,具体操作包括查找、删除、替换、插入行或字符等。 使用sed命令的基本语法为: ``` sed [选项] '动作' 文件名 ``` 其中,选项可以包括: - -n:只显示或处理特定行; - -e:指定要执行的动作; - -f:从指定文件中读取动作。 动作部分可以包括: - 数字n:表示打印第n行; - p:打印匹配行; - d:删除匹配行; - s/old/new/:查找并替换文本; - a\text:在匹配行后插入文本; - i\text:在匹配行前插入文本。 以下是一些常用的sed命令示例: - 打印文件内容: ``` sed 'p' file.txt ``` - 删除匹配行: ``` sed '/pattern/d' file.txt ``` - 查找并替换文本: ``` sed 's/old/new/' file.txt ``` - 打印指定行数: ``` sed -n 'n' file.txt ``` - 在匹配行后插入文本: ``` sed '/pattern/a\text' file.txt ``` - 在匹配行前插入文本: ``` sed '/pattern/i\text' file.txt ``` 通过灵活运用sed命令,我们可以轻松地对文本文件进行各种编辑操作,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值