Linux grep awk 命令的正则匹配提取字符串
2,713 views
0
grep 正则匹配字符串
grep '[Aa]aa' filename # 过滤出包含有Aaaa或者aaaa的一行 grep '[A-Z]' filename # 包含至少一个大写字母的行 grep -w '[tT]est' filename 包含单词和test的行. # force PATTERN to match only whole words grep -s 'ken sun' filename # 找到包含ken sun的行, 但不打印行, 而是用来检查退出状态. # -s, --no-messages suppress error messages 相当于静默模式 grep -v aaa filename # 打印不包含aaa的行. grep -l 'dear cathy' * # 打印包含dear cathy的文件的文件名清单. grep -n tom file # 打印匹配的行并追加行号.
egrep 正则匹配字符串
# egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式. # 注意二者之间的区别. egrep '(ab)+' filename # 包含至少一个ab的行. egrep 'aaaa+' filename # 包含至少四个a的行 # + 匹配一个或者多个先前的字符, 至少一个先前字符? 匹配0个或者多个先前字符. egrep 'x[0-9]?' filename # 包含x或者x后面跟着0个或者多个数字的行. egrep '(TOM|DAN) SAVAGE' filename # 包含 TOM SAVAGE 和DAN SAVAGE的行. # () 字符组, 如: love(able|ers) 匹配loveable或lovers. egrep '[A-Z]...[0-9]' filename # 有五个字符, 第一个式大写, 最后一个是数字的行.
awk 正则匹配提取字符串
awk -F"[@ /t]" '{print $2,$3}' test # 以@,空格,Tab键分割test文件的每一行,并输出第二、第三列。 # -F指定分隔符,字符或字符串都可,划分字段 awk '$2~/^(126|yahoo)/{print $2, $3}' test # 如果改行的第二个字段以"123"或"yahoo"开始,则输出改行的第二、第三列。 awk '$1~/[0-9][0-9]$/{print $1, $3}' test # 如果改行的最后两个字段以数字结束,则输出改行的第一、第三列。 awk '$2 == "gmail.com"{$1 = "ggg";print}' test # 输出test文件中第二个字段是"gmail.com"的行, # 并把改行第一列改为"ggg",并不能修改test文件内容 awk '$2 == "gmail.com"{$1 = "ggg"}{print}' test # 输出test文件中所有行,并且如果第二个字段是"gmail.com", # 把改行第一列改为"ggg",和上边那个的区别: # 主要就是这个输出所有行上边那个只输出第一个字段 awk '{IGNORECASE=1;if($2 ~/^[a-z]/&& $2~/net$/){print $0}}' test # 打开test文件,忽略字母大小写,如果第二字段以[a-z]开头, # 并以"net"结尾,则输出该行。
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2020-08-02 05:20:28
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!