图片 4

绝大许多的Linux和类Unix系统的安排文件中都有众多的笺注行,不过一时本身只想看里面包车型客车平价配置行。那自身怎么才干只见到quid.conf或httpd.conf那样的陈设文件中的非注释命令行呢?怎么去掉这个注释或然空行呢?

grep 命令类别:怎么着在 Linux/UNIX 中利用 grep 命令

作者该怎么在 Linux、Apple OS X 及其他类 UNIX 系统中应用 grep
命令,你能给本身显得一些轻易易行的事例吗?

grep
命令用来查找文本,或从给定的文本中找骑行内包括了给定字符串或单词的文件。日常来讲,grep
展现相称到的行。使用 grep
来搜求满含二个或多少个正则表明式相称到的文本行,然后只显示匹配到的行。grep
被用作在 Linux/ Unix 系统中最可行的指令之一。

图片 1

 

六分钟教你轻便掌握 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 Qashqai 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中使用 OTiggo 的逻辑运算 ?
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 那么些名字,来源于二个 Unix/Linux 中的古老的行编辑器
ed 中实践相通操作的下令:

g/re/p

 

四、关于 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

grep 命令的语法

语法如下所示:

grep 'word' 文件名
grep 'word' 文件1 文件2 文件3
grep '字符串1 字符串2'  文件名
cat 某个文件 | grep '某个东西'
command | grep '某个东西'
command 选项1 | grep '数据'
grep --color '数据' 文件名

 

参考文献:
  • grep and regex 的支持文书档案
  • grep 的 info帮忙文书档案

grep使用简明及正则表达式

正则表达式的用法

正则表明式之零宽断言

Linux命令-文件文本操作grep 

grep正则表明式

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

原稿链接:
正文链接:

本文恒久更新链接地址:

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

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."
}

现身说法输出:

图片 4

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

什么使用 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

 

admin

相关文章

发表评论

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