linux shell基础sed命令(编辑中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell基础sed命令(编辑中)相关的知识,希望对你有一定的参考价值。

写shell有个步骤就是从一段文本中截取一段字符进行处理。

一、sed命令

sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显示到屏幕上。sed的强项是替换文本中的特定字符。

用法:
sed [选项]... {脚本(如果没有其他脚本)} [输入文件]
sed [options] ‘command‘ file(s)
sed [options] -f scriptfile file(s)

选项:
-p 查找
-d 删除
-s 替换
sed -n ‘/5p/‘ passwd

二、sed 匹配搜索用法

sed可以向grep一样查找文件文本中包含关键字的行并把改行显示在屏幕上。
命令写法:sed -n ‘/(匹配的字符串)/‘p 文件名(简记为-np)

1、搜索passwd文件中包含root关键字的行。

sed -n ‘/root/‘p passwd

技术分享图片

2、搜索ssh文件中以#开头的行

sed -n ‘/^#/‘p ssh

技术分享图片

3、搜索正则‘o+t‘类型的行

sed -nr ‘/o+t/’p passwd

技术分享图片
注意“+”号属于扩展正则,需要跟-r选项才能用

4、搜索正则‘两次o’的行

sed -nr ‘/o{2}/‘p passwd

技术分享图片

5、搜索正则root或者bus的行‘root|bus’

sed -nr ‘/root|bus/‘p passwd

技术分享图片

6、不区分大小写搜索关键字所在的行

sed -n ‘/nologin/‘Ip passwd 注意是大写字母I,不是管道符号|

技术分享图片

拓展用法:打印指定的行

命令写法:sed -n ‘行号或行号描述’p 文件路径 注意单引号‘‘内不需要跟两个//
1、显示文件第2行内容

sed -n ‘2‘p passwd

技术分享图片

2、显示文件第6行至10行内容

sed -n ‘6,10‘p passwd 注意中间是逗号,不是-

技术分享图片

3、全文显示

sed -n ‘1,$‘p passwd 注意不能写成“sed -n ‘^,$‘p passwd”

技术分享图片

拓展用法: 多条件过滤

命令可以用-e参数匹配多个条件,注意多个条件是或者关系,只要符合其中的一条就会被找到,如果匹配两条规则,那么改行会显示两次

显示第一行和含有root关键字的行

sed -e ‘/root/‘p -e ‘1‘p -n passwd

技术分享图片

三、sed删除特定行用法

对特定大文件,使用sed命令删除部分内容,要比vim去打开相应的文件再删除要实用的多。没有加-i选项的删除只是显示上的删除,不会影响文件本身的内容,但加了-i选项后会作用于原始文件,所以删除前一定要做好备份。

命令写法:sed ‘/(关键字)/‘d 文件路径
1、删除文件的第一行

sed ‘1‘d 1.txt
技术分享图片
注意第一行已经被删掉了

2、删掉含关键字“bus”的行

sed ‘/bus/‘d 1.txt

技术分享图片

3、删掉特定时间段之前的文件的思路
首先用grep -n >命令通过时间关键字过滤出行数。
然后使用sed ‘1,找到的最后行行号‘d 方式删除数据

四、sed替换特定内容用法

命令写法:
sed ‘1,$s///g‘ 文件路径

sed ‘s/[0-9]//g‘ 文件:用来判断输入的内容是否是数字
sed ‘s/[a-zA-Z]//g‘ 文件名

扩展正则比正则多一些符号

五、sed调换字符串次序用法

命令写法:
小括号,分割,
sed -r ‘s/(rot)(.*)(bash)/\3\2\1‘

sed ‘s/^.*\$\/123&/‘ 文本 在每一行的最前面加上123

sed -i ‘s/ot/to/g‘ 文件 去更改文件内容,不在屏幕上显示

以上是关于linux shell基础sed命令(编辑中)的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell入门基础

linux shell基础awk命令(编辑中)

Linux Shell编程 sed命令

linux shell sed命令的问题!

shell脚本之sed详解 (sed命令 , sed -e , sed s/ new / old / ... )

linux shell sed命令用法