Linux操作系统基础操作之正则表达式

grep命令

是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print
格式:
grep [-acinv] ‘keyword’ filename
-a:在二进制文件用文本方式查找word字符串
-c:计算找到word字符串的次数
-i:不区分大小写
-n:输出时显示行号
-v:显示没有word的行

eg:who | grep ‘root’
查找以root身份登录的信息
who | grep –v ‘root’
查找以非root身份登录的信息

搜寻指定字符串,且输出时显示行号:
grep –n ‘the’ regular_express.txt
grep -vn 'the' regular_express.txt
grep -in 'the' regular_express.txt

使用方括号 [ ] 包含一系列字符,表示能够匹配其中任意一个字符。
在方括号中使用连字符“-”表示某个范围
[^ ] 包含一系列字符,则表示能够匹配其指定字符之外的任意一个字符。
例如:
[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"
[^abc] 匹配 "a","b","c" 之外的任意一个字符
[f-k] 匹配 "f"~"k" 之间的任意一个字母
[A-F0-3] 匹配 "A"~"F","0"~"3" 的任意一个字符

利用中括号[]指定搜寻范围,且显示行号
注意:当使用的搜索字符串是一个指定的范围时,用引号将其括起来

反向选择[^]

sed工具

sed 是一种编辑器,它一次处理一行内容。
sed把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
sed并没有改变文件内容,除非使用重定向存储输出。

sed主要功能
替换、删除、新增、选取特定行等。
格式:
sed [-nefr] [动作]
-n:使用安静模式。数据一般不会显示在屏幕上,只有经过sed特殊处理的行才会显示出来
-e:直接在命令行模式上进行sed的操作编辑
-f:直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作
-r:sed的操作支持的是扩展正则表达式的语法(默认是基础表达式)

动作
a :在当前行后面加入一行文本。
c :用新的文本改变本行的文本。
d :从模板块(Pattern space)位置删除行。
i :在当前行上面插入文本。
p :打印某个选择的数据,通常与sed -n 一起使用
s/re/string/g :用string替换正则表达式re;g表示行内全面替换。

例子

删除2-5行

$ sed ‘s/test/mytest/g’ example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

猜你喜欢

转载自www.cnblogs.com/zgmzbhqa/p/10250462.html
今日推荐