正则中sed工具

sed工具介绍

  • 介绍

sed不只可以实现如grep的匹配功能,并且还能实现文本替换功能等。正则表达式

sed的匹配功能

  • 实验概览
sed -n '5'p test.txt 
 sed -n '1,5'p test.txt
 sed -n '1,$'p test.txt
 sed -n '/root/'p test.txt
 sed -n '/^1/'p test.txt
 sed -n 'in$'p test.txt
 sed -n '/r..o/'p test.txt
 sed -n 'oo*'p test.txt
 sed -e '1'p -e '/111/'p -n test.txt

打印某行

  • 语法sed -n 'n'p fiename

p: 参数p表示打印
-n:只打印咱们指定的行,无关选项不加。
不加-n:会在指定行,后面显示因此其余的行。
'n':单引号里的n表示第几行;
'1,$':表示打印全部,**$**表示前面指定1行的后面的全部行
:能够指定一个范围打印,如 sed -n '1,3' test.txt工具

打印包含某个字符串的行

  • 语法sed -n '/root/'p fiename

//:表示匹配字符串
: 在打印字符串时,在grep中的特殊字符(&*等)一样能在sed中使用 。
-e:加上此选项可以同时实现多个行为。在匹配行的同时匹配一个字符串,若两个不一样的表达式,都匹配的是同一个字符串或行,那么将会打印两次。
I,大i 匹配时不区分大小写,如sed -n '/bus/'Ip /etc/passwdcode

  • 特殊符号+

在sed使用特殊符号+匹配时,须要加脱义符号,如 sed -n '/r+t/'p test.txt;
sed -nr: 加r命令后,就不用加脱义字符blog

删除某些行或字符串

  • 语法sed '1,20'd /etc/passwd

d,表示删除动做,这个操做不会修改文件的实际内容文档

  • 直接删除文件选项

-i:会直接删掉文件内容,而且能指定字符串名字符串

sed的替换功能

全局替换

  • 语法:sed '1,10s/root/toor/g' test.txt

参数s:表示替换的动做
参数g:表示本行全局替换,如不加g则替换本行常出现的第一个字符串test

  • 替换也是可以使用正则表达式的

如:sed -r '1,10s/ro+/r/g' test.txt :这里由于sed 使用+ 因此用了 -r选项(取消脱义字符)sed

调换两个字符的位置

  • 示例:准备将途中的两个字符串调换位置,包括后面的全部字符串一块儿首尾调换

  • 正确命令以下
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
  • 解释

1.格式
s//:表示所有,不指定范围就是所有
-r:取消脱义符号
2.在调换前,咱们要先用表达式,表答咱们须要调换的字符串
s//:表示所有,不指定范围就是所有
[^:]:表示一个非冒号的字符
[^:]+:加号表示一个或多个 ,如root
([^:]+):小括号表示等会咱们须要调用括号内的东西;
:表示间隔的特殊符号
*. **:表示所有匹配
(.*): 表示贪婪匹配,意为直到最后一个冒号为止的字符串
([^:]+):表示一个非零字符串
3.调换位置
\3:\2:\1/:这里的意思是3个字符串的位置;本应该是123 ,可是咱们要给他们调换位置,因此变成了321,冒号是间隔符号搜索

  • 注意:脱义或者替换一些分隔符,好比用@,只要能区分开就行

把文档里全部的英文字母删除

  • 实际意义就是替换为空

如:sed 's/[a-zA-Z]//g' test.txt语法

在全部行前面加上aaa

  • 示例

head test.txt |sed -r 's/(.*)/aaa:&/' &:保存搜索字符用来替换其余字符,如s/asd/&/,asd这成asd

相关文章
相关标签/搜索