正则表达式与grep

文本编辑工具

grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;

sed :是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用;

awk :是一种编程语言,用于在linux/unix下对文本和数据进行处理;

grep使用

grep [OPTION] PATTERN [FILE…]

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

选项:

–color=auto:自动加颜色;

-i :ignorecase,忽略字符大小写;

-o :仅显示匹配道德字符串本身;

-v :–invert-match:显示不能被模式匹配到的行;

-E :支持使用扩展的正则表达式元字符;

-q :不输出任何信息;

-A<显示列数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容;

-B<显示列数>:在显示符合范本样式的那一行之外,并显示该行之前的内容;

-C<显示列数>:除了显示符合范本样式的那一列之外,并显示该列之前后的内容;

正则表达式

正则表达式,又称规则表达式。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式元字符

(1)字符匹配:

. :匹配任意单个字符;

[] :匹配指定范围内的任意单个字符;

[^] :匹配指定范围外的任意单个字符;

(2)匹配次数:

* :匹配其前面的字符任意次;

.* :匹配任意长度的任意字符;

\? :匹配其前面的字符至多1次;

\+ :匹配其前面的字符至少1次;

\{m\} :匹配其前面的字符m次;

\{m,n\} :匹配其前面的字符至少m次,至多n次;

\{0,n\} :匹配其前面的字符至多n次;

\{m,\} :匹配其前面的字符至少m次;

(3)位置锚定:

^ :行首锚定;

$ :行尾锚定;

^PATTERN$ :用PATTERN来匹配整行;

^$ :匹配空白行;

^[[:space:]]*$ :包含空白字符的行或空行;

单词:非特殊字符组成的连续字符;

\<或<b :词首锚定;

\>或\b :词尾锚定;

\<PATTERN\> :匹配完整单词;

(4)分组及引用:

\(\) :将一个或多个字符当作一个整体;分组括号中的内容会被记录于内部变量中,可作为引用;

后向引用:

\1 :引用第一个括号中匹配到的字符;

\2 :引用第二个括号中匹配到的字符;

… …

示例

1.显示当前系统上root、fedora或user1用户的默认shell;

# less /etc/passwd | egrep "^(root|fedora|user1)\>" | cut -d: -f1,7
root:/bin/bash
user1:/bin/bash
fedora:/bin/bash
 
或
 
# less /etc/passwd | grep "^\(root\|fedora\|user1\)\>" | cut -d: -f1,7
root:/bin/bash
user1:/bin/bash
fedora:/bin/bash

2.找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();

# egrep "\<[[:alnum:]]+\(\)" /etc/rc.d/init.d/functions
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {

3.使用echo命令输出一个绝对路径,使用grep取出其基名;

扩展:取出其路径名;

# echo "/var/log/cron" | egrep -o "[^/]+/?$"
 
# echo "/var/log/cron" | egrep -o "^(/[^/]+)+/$"

4.找出ifconfig命令结果中的1-255之间数字;

# ifconfig | egrep -o "[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]"

5.挑战题:写一个模式,能匹配合理的IP地址;

# ifconfig | egrep -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"

6.挑战题:写一个模式,能匹配出所有的邮件地址;

# egrep -o "[[:alnum:]]+\@[[:alnum:]]+\.[[:alnum:]]"

7.查找/var目录下属主为root,且属组为mail的所有文件或目录;

# find /var  -user root -a -group mail

8.查找当前系统上没有属主或属组的文件;

进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;

# find / -nouser -o  -nogroup
 
# find / \( -nouser -o -nogroup \) -atime -3

9.查找/etc目录下所有用户都有写权限的文件;

# find /etc -perm -222

10.查找/etc目录下大于1M,且类型为普通文件的所有文件;

# find /etc/ -size +1M -type f -exec ls -lh {} \

11.查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;

# find /etc/init.d/ -perm -113 -type f

12.查找/usr目录下不属于root、bin或hadoop的文件;

# find /usr/ -not \( -user root -o -user bin -o -user hadoop \)

13.查找/etc/目录下至少有一类用户没有写权限的文件;

# find /etc/ -not -perm -222

14.查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;

# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \)
时间: 2024-10-07 07:29:48

正则表达式与grep的相关文章

文本处理工具与正则表达式、grep

一.文本处理工具 1.文本查看命令 cat [OPTION]- [FILE]- -n 显示行号 -b 空格行不加行号,有字符的行才加 -s  相邻的空行压缩为一行,长和-n联用 -v 处理windows中的^M -T 可以看到tab\space -A  显示所有控制符(包括windows文本中的^M,^T) -E  显示行结束符$ (回车) tac [OPTION]- [FILE]-  将每个指定文件按行倒置并写到标准输出. 效果与cat 相反 rev  将指定文件从最后一个字符开始显示到第一个

正则表达式和grep命令的用法

正则表达式和grep命令的用法: 一.正则表达式: 正则表达式(也称为regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称之为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gr

正则表达式与grep、sed工具使用简介

正则表达式与grep.sed工具使用简介 一.正则表达式     正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 其介绍如下:      \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的子表达式任意次 + 匹配前面的子表达式一次或多次(大于等于1次) ? 匹配前

文本处理之正则表达式和grep

Linux是基于文件的系统,可以认为Linux的所有命令都是对文件的操作(有些操作的是变量),熟练掌握Linux的文本处理工具是所有学习linux所必需要掌握的,尤其是准备跨入Linux行业的同学更是如此,在工作中我们将会遇到非常多而且内容庞大的文本,批量处理和精确定位将成为工作的日常操作.有时即使我们已经掌握了所有的文本处理工具,面对繁杂的文本也会感到无从着手,这是很正常的,Linux文本处理技巧是需要时间和练习去不断积累的,所以不要感到疲倦,下面来梳理一下日常中常见到的命令吧. 一.Linu

正则表达式及grep

正则表达式及grep #以下所有的举例是用正则表达式的方式 #正则表达式 #由一类特殊字符及文本所编写的模式 #分两类: 基本正则表达式:BRE 扩展正则表达式:ERE 字符匹配选项 .              匹配任意单个字符 []               匹配指定范围内的任意单个字符 示例:cat /etc/passwd | grep "roo."         查看/etc/passwd目录下 显示包含roo后面加任意单个字符的行 示例:cat /etc/passwd |

linux初学之——正则表达式及grep系

grep  sed   awk 被称为文本处理三剑客,本篇主要讲下grep. grep: Global search Regular Expression and Print out the line 利用正则表达式进行全局搜索并将匹配的行显示出来: 想要对grep进行深入了解就要先对正则表达式进行初步认知和学习,接下来,我们先介绍下正则表达式. 正则表达式 正则表达式:是一类字符所书写出的模式(pattern):元字符:不表示字符本身的意义,用于额外功能性的描述. 正则表达式元字符: 基本的正

关于 文本处理工具、正则表达式、grep 的简单举例

文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat [选项] [file] cat -n     对显示出的每一行进行编号 cat -b     非空行编号 cat -ns    连续压缩空行成一行 cat -v     显示回车符 cat -E     显示行结束符$ cat -A     显示所有控制符 tac file   反向显示内容 rev file   反向显示

正则表达式 与grep

正则表达式与grep          (前半部分为理解概念,后面是应用实例) 什么是正则表达式: 正则表达式:Regular Expression, REGEX 是由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能: 什么是grep: grep: Global search REgular expression and Print out the line.Gloal search REGEX 文本搜索工具,根据用户指定的"模式(pattern)&q

正则表达式与grep命令

一.引言 介绍Linux系统中的两个命名:grep,egrep.要想使用这2个命令要先学会使用正则表达式,在介绍正则表达式之前,先说明一下,大家都熟知的在word中使用的通配符,即: *:表示任意长度任意字符. ?:表示任意单个字符. 记住上面这两个字符所表示的意思,后面还会在正则表达式里出现,但意义不同. 1.正则表达式:Regular Expression,REGEXP 由一类特殊字符及文本字符所编写的模式,其有些字符不表示字面意义,而是用于表示控制或通配的功能: 元字符分两类: 基本正则表

【实例】正则表达式利用grep和sed处理日志内容,获取所需的内容

[实例]正则表达式利用grep和sed处理日志内容, 获取所需的内容 app.log文件内容: 2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:532172014-09-12 10:00:06,555 INFO [com.tt.bb.thread.Control] - Socket连接:/182.113.83.51:53249 2014-09-13 20:00:11,587 INF