grep 命令类别:怎么样在 Linux/UNIX 中运用 grep 命令

grep 命令示例——去掉注释

能够依据如下示例使用grep命令:

$ grep -v "^#" /path/to/config/file
$ grep -v "^#" /etc/apache2/apache2.conf

演示输出:

ServerRoot "/etc/apache2"

LockFile /var/lock/apache2/accept.lock

PidFile ${APACHE_PID_FILE}

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

AccessFileName .htaccess

<Files ~ "^/.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

DefaultType text/plain

HostnameLookups Off

ErrorLog /var/log/apache2/error.log

LogLevel warn

Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

LogFormat "%v:%p %h %l %u %t /"%r/" %>s %O /"%{Referer}i/" /"%{User-Agent}i/"" vhost_combined
LogFormat "%h %l %u %t /"%r/" %>s %O /"%{Referer}i/" /"%{User-Agent}i/"" combined
LogFormat "%h %l %u %t /"%r/" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

Include /etc/apache2/conf.d/

Include /etc/apache2/sites-enabled/

想要跳过里面包车型客车空行,能够采用 egrep
命令, 示例:

egrep -v "^#|^$" /etc/apache2/apache2.conf
## or pass it to the page such as more or less ##
egrep -v "^#|^$" /etc/apache2/apache2.conf | less

## Bash function ######################################
## or create function or alias and use it as follows ##
## viewconfig /etc/squid/squid.conf                  ##
#######################################################
viewconfig(){
   local f="$1"
   [ -f "$1" ] && command egrep -v "^#|^$" "$f" || echo "Error $1 file not found."
}

演示输出:

沙国际官网 1

图 01: Unix/Linux Egrep 除去注释行和空行

接受 grep 去探寻文本

当你寻觅 boo 时,grep 命令将会相称 fooboo,boo123, barfoo35
和别的具有包涵 boo 的字符串,你可以选择 -w
选项去强逼只输出那个单纯包罗那么些全数单词的行(LCTT译注:即该字符串两边是保加阿瓜斯卡连特斯语单词分隔符,如空格,标点符号,和前面等,因而对中文这种未有断字符号的言语并不适用。)。

$ grep -w "boo" file

 

九分钟教你轻轻松松精通 grep 命令中的正则表达式

如何在 Linux 系统和类 Unix 的操作系统中央银行使带正则表明式的 grep 命令呢?

Linux 系统自带了帮衬开展正则表明式的 GNU 版本 grep 工具。全数的 Linux
系统中私下认可安装的都是 GNU 版 grep 。grep
命令被用来搜寻一台服务器或职业站上别样岗位的文本音讯。

沙国际官网 2

一、连忙了然正则表达式

1、如何协作你要搜索的内容?

正则表达式只不过是各类输入行相配的情势。格局是多个字符系列。下边都是圭臬:

例如:“^w1”、“w1|w2”、“[^ ]”。

在 ‘/etc/passswd’ 中检索 ‘vivek’ 。
grep vivek /etc/passwd

输出结果案例:
vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash
vivekgite:x:1001:1001::/home/vivekgite:/bin/sh
gitevivek:x:1002:1002::/home/gitevivek:/bin/sh

在此外景况下都搜索 ‘vivek’  (即不区分轻重缓急卡塔尔(قطر‎:
grep -i -w vivek /etc/passwd

不区分轻重缓急写地搜索 ‘vivek’ 和 ‘raj’ :
grep -E -i -w ‘vivek|raj’ /etc/passwd

在结尾四个例子中,使用了扩充正则表明式的方式。

牢固检索内容的职位:
 你能够使用 ^ 和 $
符号压迫一个正则表明式分别匹配一行的始发或终止的岗位。下边包车型大巴身体力行显示以
‘vivek’ 最初的公文。
grep ^vivek /etc/passwd

输出结果示例:
vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash
vivekgite:x:1001:1001::/home/vivekgite:/bin/sh

您能够只彰显以 vivek 初叶的文本行。举个例子说便是不出示 vivekgite , vivekg
那样单词初始的。
grep -w ^vivek /etc/passwd

搜索以 ‘foo’ 结尾的文本格式:
grep ‘foo$’ FILENAME

你还是能够用上面这样的章程寻找空白行:
grep ‘^$’ FILENAME

2、如何同盟具体字符?

匹配 ‘Vivek’ 或 ‘vivek’ :
grep ‘[vV]ivek’ FILENAME

也许能够那样:
grep ‘[vV][iI][Vv][Ee][kK]’ FILENAME

您能够相称数字(比方相称 vivek1 或 Vivek2 ):
grep -w ‘[vV]ivek[0-9]’ FILENAME

您能够同盟两位数(比如相配 foo11 , foo12 ):
grep ‘foo[0-9][0-9]’ FILENAME

不只是数字,你能够宽容字母:
grep ‘[A-Za-z]’ FILENAME

体现全数包涵 “w” 或 “n” 字母的文本行:
grep [wn] FILENAME

在括号内的表达式中,在“ [: ”和“ :]
”中所附的字符类的称呼:代表归于此类的兼具字符的列表。标准字符类名称:
◾[:alnum:] – 字母数字字符。
◾[:alpha:] – 字母顺序
◾[:blank:] – 空格和制表符。
◾[:digit:] – 数字: ‘0 1 2 3 4 5 6 7 8 9’。
◾[:lower:] – 小写字母:‘a b c d e f ‘。
◾[:space:] –
特殊字符:制表符,换行符,垂直制表符、换页,回车,和空中。
◾[:upper:] – 大写字母:‘A B C D E F G H I J K L M N O P Q Sportage S T U V W
X Y Z’。

在底下那些事例中,相配全部大写字母:
grep ‘[:upper:]’ FILENAME

3、如何接纳通配符?

你能够用 “.” 来顶替单个字符。在上面的例子中,查询了具备以字母 “b”
初叶、字母 “t” 结尾的五个字符的单词。
grep ‘\<b.t\>’ FILENAME

在下边包车型客车例子中,
◾\< 在单词的早先地方相称空格字符串
◾\> 在单词的结尾相配空格字符串

探寻并出口全部三个假名的结果:
grep ‘^..$’ FILENAME

搜求并体现全数以 ‘.’ 和数字开始的结果:
grep ‘^\.[0-9]’ FILENAME

转义字符’.’
上面包车型地铁正则表达式查找 IP 地址 192.168.1.254 将不可能获取预期的结果:
grep ‘192.168.1.254’ /etc/hosts

中间三个点都亟需被转义:
grep ‘192\.168\.1\.254’ /etc/hosts

以下示例将只卓殊贰个地址:
egrep
‘[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}’
FILENAME

以下将不分大小写地同盟单词 Linux 或 Unix :
egrep -i ‘^(linux|unix)’ FILENAME

二、深切斟酌 grep 高档寻觅形式

1、怎样寻觅一个兼有以 ‘-‘ 伊始的的方式?

采取 -e 选项搜索全数相称 ‘–test–‘ 的结果。grep 会尝试把 ‘–test–‘
作为一个取舍分析:
grep -e ‘–test–‘ FILENAME

2、怎么样在grep中使用 OHighlander 的逻辑运算 ?
grep -E ‘word1|word2’ FILENAME
### OR ###
egrep ‘word1|word2’ FILENAME

要么能够如此做
grep ‘word1\|word2’ FILENAME

3、如何在grep中动用 AND 的逻辑运算 ?

依照上边包车型客车语法展现全数包涵了单词 ‘word1′ 和 ‘word2′ 的结果:
grep ‘word1’ FILENAME | grep ‘word2’

仍然是能够这么:
grep ‘foo.*bar\|word3.*word4’ FILENAME

4、如何测量试验类别?

您能够运用上面包车型大巴语法测验三个字符在连串中的重复的次数:
{N}
{N,}
{min,max}

协作包括五个字母 v 的字符串结果:
egrep “v{2}” FILENAME

上边包车型地铁例证上校检索文件内包括 “col” 和 “cool” 的字符串结果:
egrep ‘co{1,2}l’ FILENAME

上边包车型地铁例子上将相称最少含有3个字母 c 的结果:
egrep ‘c{3,}’ FILENAME

上面包车型客车上行下效将相称 “91-1234567890″ 格式的手提式有线电话机号码(即
“两位数字-十二个人数字”)
grep “[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\沙国际官网,}” FILENAME

5、怎么样使 grep 的出口结果高亮标记?

行使上面例子的语法:
grep –color regex FILENAME

6、怎么着使 grep 的出口只体现相称的某些实际不是整行?

运用上边例子的语法:
grep -o regex FILENAME

三、正则表达式操作符计算

正则表达式
操作符
                                                  含义
. 匹配任何单个字符。
? 匹配前一个字符0次或1次。
* 匹配前一个字符≥0次。
+ 匹配前一个字符≥1次。
{N} 匹配前一个字符N次。
{N,} 匹配前一个字符≥m次。
{N,M} 匹配前一个字符 N 到 M次。
如果在列表中的某个列表或某个范围内的结束点,表示该范围。
^ 开始标记,表示在开始位置匹配一个空字符串。也表示不在列表的范围内的字符。
$ 结束标记。匹配一个空的字符串。
\b 单词锁定符。在一个单词的边缘位置匹配空字符串。
\B 在一个单词的非边缘位置匹配空字符串。
\< 匹配单词开始的空字符串。
\> 匹配单词结尾的空字符串。

笔者们能够选拔 UNIX/BSD/OS X/Linux 这个操作系统本人提供的
grep,sed,awk,perl或许其余文本管理工科具来查阅配置文件中的有效配置命令行。

使用 grep 命令去追寻三个不等的单词

运用 egrep 命令如下:

$ egrep -w 'word1|word2' /path/to/file

(LCTT 译注:这里运用到了正则表明式,由此接受的是 egrep 命令,即扩张的
grep 命令。)

 

四、关于 grep 和 egrep

egrep 即 grep -E ,它把方式作为叁个恢弘的正则说明式解释。grep
支持文书档案中那样定义:

 In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their special meaning; instead use the backslashed versions \?, \+, \{,
       \|, \(, and \).
       Traditional egrep did not support the { meta-character, and some egrep implementations support \{ instead, so portable scripts should avoid  {  in
       grep -E patterns and should use [{] to match a literal {.
       GNU grep -E attempts to support traditional usage by assuming that { is not special if it would be the start of an invalid interval specification.
       For example, the command grep -E '{1' searches for the two-character string {1 instead of reporting a syntax  error  in  the  regular  expression.
       POSIX.2 allows this behavior as an extension, but portable scripts should avoid it.

沙国际官网 3

UNIX/Linux 管道与 grep 命令

grep 平常与管道一齐使用,在此个事例中,显示硬盘设备的名字:

# dmesg | egrep '(s|h)d[a-z]'

显示 CPU 型号:

# cat /proc/cpuinfo | grep -i 'Model'

唯独,以上命令也足以服从以下格局运用,不使用管道:

# grep -i 'Model' /proc/cpuinfo

演示输出:

model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz
model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz

 

参谋文献:
  • grep and regex 的协理文书档案
  • grep 的 info帮助文书档案

grep使用简明及正则表明式

正则表明式的用法

正则表明式之零宽断言

Linux命令-文件文本操作grep 

grep正则表明式

Linux中正则表明式与公事格式化管理命令(awk/grep/sed卡塔尔国

原稿链接:
正文链接:

正文恒久更新链接地址:

grep 命令中的正则表达式 怎么着在
Linux 系统和类 Unix 的操作系统中利用带正则表明式的 grep 命令呢? Linux
系统自带了支…

大部的Linux和类Unix系统的配备文件中都有无数的批注行,然而有的时候本人只想看个中的有效配置行。那笔者怎么技巧只看到quid.conf或httpd.conf那样的安排文件中的非注释命令行呢?怎么去掉那个注释或然空行呢?

怎么使用 grep 来研究多少个文本

招来 /etc/passwd 文件下的 boo 客户,输入:

$ grep boo /etc/passwd

出口内容:

foo:x:1000:1000:foo,,,:/home/foo:/bin/ksh

能够接纳 grep 去强迫忽视大小写。举例,使用 -i 选项能够相配 boo, Boo, BOO
和其余组成:

$ grep -i "boo" /etc/passwd

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注