在Linux中,往往需要对大量文本做处理,其中有效的文本处理工具主要有grep ,sed 和 awk,三者称为文本处理的三大利器。
grep :Globally search a Regular Expression and Print the line的缩写。表明grep是对文本中的行,逐行进行处理。
使用:grep [options] pattern [file]或者grep [options] [-e pattern | -f file] [file];
options :
--color=auto:对匹配到的文本着色后高亮显示: grep --color=auto "def" def.py ;
-i:ignorecase 忽略字符大小写:grep -i "def" test.txt;
-o:仅显示匹配到的字符串本身:grep -o "def" test.txt;
-v:invert match反向匹配,显示不能匹配的行 grep -v “def" test.txt;
-E:支持扩展的正则表达式的元字符;
-q:--quiet,--silent 静默模式,即不打印出任何信息,用于判断执行状态,echo #?;
-n: --line-number 打印匹配行和行号;
-A num:after 打印匹配行和该行后面 num行;
-B num:before 打印匹配行和该行前面num 行;
-C num:context打印匹配行和该行前后num行;
基本正则表达式元字符:
字符匹配:
.:所有单个字符;
[ ] :指定范围内的单个字符;
[^ ]:匹配指定范围外的任意单个字符 grep [^def] test.txt;
匹配次数:
* 任意次数 0,1,多次;
\? 匹配前面的字符0次或者1次,即前面的字符可有可无;
\+ 匹配前面的字符1次或者多次,即前面的字符一定出现至少一次;
\{m\}:匹配前面的字符m次;
\{m,n\}:匹配前面的字符至少每次,至多n次;
\{0,n\}:至多n次;
\{m,\}:至少m次;
位置锚定:
^ :行首
$:行尾
^$:空白行,不包括空白字符
^[[:space:]]*$:空行或者含有空白字符的行
分组及引用:
\(\):将一个或者多个字符捆绑在一起,进行处理;
\1:左起第一个();
\2:左起第二个();
...