3522vip 3

命令系列

By admin in 3522vip on 2020年5月8日

大部的Linux和类Unix系统的陈设文件中都有好多的笺注行,可是不常作者只想看里面包车型客车立竿见影配置行。这本身怎么本领只见quid.conf或httpd.conf那样的配置文件中的非注释命令行呢?怎么去掉这么些注释大概空行呢?

grep 命令种类:怎样在 Linux/UNIX 中选拔 grep 命令

本身该怎么在 Linux、Apple OS X 及别的类 UNIX 系统中采纳 grep
命令,你能给自己出示一些精简的例证吗?

grep
命令用来查找文本,或从给定的文本中找骑行内包蕴了给定字符串或单词的公文。常常来讲,grep
展现相配到的行。使用 grep
来找出包罗八个或四个正则表明式相配到的文本行,然后只浮现相配到的行。grep
被用作在 Linux/ Unix 系统中最得力的一声令下之一。

3522vip 1

 

咱俩得以接收 UNIX/BSD/OS X/Linux 这个操作系统自己提供的
grep,sed,awk,perl或然其它文本管理工科具来查看配置文件中的有效配置命令行。

你精通吗

grep 那么些名字,来源于三个 Unix/Linux 中的古老的行编辑器
ed 中实践相像操作的吩咐:

g/re/p

 

3522vip 2

grep 命令的语法

语法如下所示:

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

 

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

演示输出:

3522vip 3

图 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

 

知道 grep/egrep 命令行选项

-v
选项,选用出不合作的命令行。该选项适用于全部基于posix的系列。正则表明式
^$ 匹配出全数的非空行, ^# 相配出全部的不以“#”开始的非注释行。

递归使用 grep

你能够递归地应用 grep
实行搜寻。例如,在文件目录上边寻找全数满含字符串“192.168.1.5”的公文

$ grep -r "192.168.1.5" /etc/

或者是:

$ grep -R "192.168.1.5" /etc/

示范输出:

/etc/ppp/options:# ms-wins 192.168.1.50
/etc/ppp/options:# ms-wins 192.168.1.51
/etc/NetworkManager/system-connections/Wired connection 1:addresses1=192.168.1.5;24;192.168.1.2;

你拜候到寻觅到 192.168.1.5
的结果每一行都前缀以找到非常的文本名(举例:/etc/ppp/options)。输出之中满含的公文名能够加
-h 选项来制止出口:

$ grep -h -R "192.168.1.5" /etc/

或者

$ grep -hR "192.168.1.5" /etc/

示范输出:

# ms-wins 192.168.1.50
# ms-wins 192.168.1.51
addresses1=192.168.1.5;24;192.168.1.2;

 

sed 命令示例

能够依照如下示例使用 GNU 上的 sed 命令:

$ sed '/ *#/d; /^ *$/d' /path/to/file
$ sed '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf

GNU 或 BSD 上的 sed
也足以匡正配置文件。上边包车型地铁指令的功力是原地编辑文件,并以特定(举例.bak)备份文件:

sed -i'.bak.2015.12.27' '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf

更加的多音讯见参谋手册 –
grep(1),
sed(1)。

3522vip ,行使 grep 去找出文本

当你找出 boo 时,grep 命令将会相配 fooboo,boo123, barfoo35
和其它兼具包蕴 boo 的字符串,你能够运用 -w
选项去强逼只输出那个单纯包罗那个全部单词的行(LCTT译注:即该字符串两边是菲律宾语单词分隔符,如空格,标点符号,和后边等,由此对中文这种未有断字符号的语言并不适用。)。

$ grep -w "boo" file

 

发表评论

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

网站地图xml地图
Copyright @ 2010-2020 3522vip 版权所有