馬哥教育網絡班22期第五周博客作業

正則表達式與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])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([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 \)

原創文章,作者:N22-無錫-沉默,如若轉載,請注明出處:http://www.www58058.com/48939

(0)
N22-無錫-沉默N22-無錫-沉默
上一篇 2016-10-19 14:19
下一篇 2016-10-19 14:19

相關推薦

  • N25第二周作業

    第二周作業 一、Linux上的文件管理類命令有哪些,其常用的使用方法以及相關實例演示 演示用結構  [root@centos01 yanshi]# tree -a /tmp/yanshi/   /tmp/yanshi/ ├── a │   └── 1…

    Linux干貨 2016-12-14
  • sed編輯器使用

     簡述       sed編輯器被稱作流編輯器,和普通的交互式文本編輯器恰好相反。在交互式文本編輯器中(比如vim), 你可以用鍵盤命令來交互式地插入、刪除或替換數據中的文本。流編輯器則會在編輯器處理數據之前基于預先 提供的一組規則來編輯數據流。sed編輯器可以根據命令來處理數據流中的數據,這些命令…

    2017-06-19
  • 基于Cobbler實現多版本系統批量部署

    前言 運維自動化在生產環境中占據著舉足輕重的地位,尤其是面對幾百臺,幾千臺甚至幾萬臺的服務器時,僅僅是安裝操作系統,如果不通過自動化來完成,根本是不可想象的。記得前面我們探究了基于PXE實現系統全自動安裝,但PXE同時只能提供單一操作系統的批量部署,面對生產環境中不同服務器的需求,該如何實現批量部署多版本的操作系統呢?Cobbler便可以的滿足這一實際需求,…

    Linux干貨 2015-07-09
  • Linux文件管理命令與bash的工作特性

    Shell程序在接受到用戶執行命令的請求時,在分析完成之后,最左側的字符串會被當作命令;
    命令查找機制:查找內部命令時,根據PATH環境變量中設定的目錄,從左至右逐個搜索目錄下的文件名;

    2018-03-11
  • CentOS6 ELK實現

    1 簡介 我們來介紹Centos6.5基于SSL密碼認證部署ELK(Elasticsearch 1.4.4+Logstash 1.4.2+kibana3),同時為大家介紹如何集合如上組件來收集日志,本章的日志收集主要為大家介紹SYSTEM日志收集. 集中化日志收集主要應用場景是在同一個窗口臨時性或永久性鑒定分析系統,應用等各類日志,對用戶提供極大便利,同時也…

    2015-02-15
  • iptables

    Evernote Export   基于本機服務器的iptables: 創建、重命名、刪除自定義chain ~]# iptables -N testchain ~]# iptables -nL Chain INPUT (policy ACCEPT) target     prot opt source    …

    Linux干貨 2016-11-20

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-25 13:36

    第二個問題看一下man grep的參數

欧美性久久久久