Linux文本处理三大方法都是什么
sed:streameditor,流编辑工具程序。
awk:linux上是gawk,格式化文本工具程序。
grep:GlobalsearchRegularexpressionandprintouttheline
使用基本正则表达式的命令:
grep
egrep-G
fgrep-G
使用扩展正则表达式的命令:
grep-E
egrep
fgrep-E
不使用正则表达式的命令,速度会快得多。
fgrep
文本搜索工具,根据用户指定的搜索条件,对目标文本逐行扫描,打印出匹配的所有行。
grep使用介绍:
语法:
grep[OPTIONS]PATTERN[FILE...]
grep[OPTIONS][-ePATTERN|-fFILE][FILE...]
最基本的例子:查找"UUID",在/etc/fstab
#grep"UUID"/etc/fstab
UUID=3d3b316a-529e-484a-9895-e785fdde5365/bootxfsdefaults00
搜索时,搜索条件的字母是区分大小写的,让它不区分大小写的选项:-i
#grep"UUiD"/etc/fstab
#echo$?
1
#grep-i"UUiD"/etc/fstab
UUID=3d3b316a-529e-484a-9895-e785fdde5365/bootxfsdefaults00
不让它显示匹配到的一整行,只显示匹配但的文本内容本身:-o
#grep-o"UUID"/etc/fstab
UUID
让它显示没有匹配到的行:-v
#grep-v"UUID"/etc/fstab
/dev/mapper/centos-root/xfsdefaults00
不显示匹配到的内容,只想知道是否匹配的结果:-q
#grep-q"UUID"/etc/fstab
#echo$?
0
#grep-q"UUIDa"/etc/fstab
#echo$?
1
使用扩展正则表达式:-E
显示匹配到的行的行号:-n
#grep-n"UUID"/etc/fstab
10:UUID=3d3b316a-529e-484a-9895-e785fdde5365/bootxfsdefaults00
显示匹配到行的后面几行:-A#。#是数字
#grep-nA1gentoo/etc/passwd
49:gentoo:x:1004:1004::/tmp/gentoo:/bin/bash
50-fedora:x:1005:1005::/tmp/fedora:/bin/bash
显示匹配到行的前面几行:-B#。#是数字
#grep-nB2gentoo/etc/passwd
47-za2:x:1002:1003::/home/za2:/bin/bash
48-mysql:x:1003:979::/home/mysql:/sbin/nologin
49:gentoo:x:1004:1004::/tmp/gentoo:/bin/bas
显示匹配到行的前面几行和后面几行:-C#。#是数字
#grep-nC1gentoo/etc/passwd
48-mysql:x:1003:979::/home/mysql:/sbin/nologin
49:gentoo:x:1004:1004::/tmp/gentoo:/bin/bash
50-fedora:x:1005:1005::/tmp/fedora:/bin/bash
字符匹配
.:匹配任意单个字符
#grep-n"f..ora"/etc/passwd
50:fedora:x:1005:1005::/tmp/fedora:/bin/bash
#grep"f.ora"/etc/passwd
#
[]:匹配指定范围内的任意单个字符,中间不用逗号分隔
[^]:匹配指定范围外的任意单个字符
[:digit:],[:lower:],[:upper:],[:alpha:],[:alnum:],[:punct:],[:space:]
例子:匹配r和t之间,是2个字母的行。
#grep"r[[:alpha:]][[:alpha:]]t"/etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
匹配次数:默认是贪婪模式,匹配到后,还会一直继续匹配下去,直到匹配不到了才停。
结束语:以上就是有关Linux文本处理三大方法之grep的全部内容,更多内容请关注学步园。