<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

        Linux文本匹配命令grep與fgrep使用全解

        時間: 志藝942 分享

          Linux中g(shù)rep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關(guān),是Linux入門學(xué)習(xí)中的基礎(chǔ)知識,接下來是小編為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。

          Linux文本匹配命令grep與fgrep使用全解

          grep

          grep (global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。Linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。

          grep的工作方式是這樣的,它在一個或多個文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到屏幕,不影響原文件內(nèi)容。

          grep可用于shell腳本,因為grep通過返回一個狀態(tài)值來說明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。

          grep --help

          匹配模式選擇:

          -E, --extended-regexp 擴展正則表達式egrep

          -F, --fixed-strings 一個換行符分隔的字符串的集合fgrep

          -G, --basic-regexp 基本正則

          -P, --perl-regexp 調(diào)用的perl正則

          -e, --regexp=PATTERN 后面根正則模式,默認無

          -f, --file=FILE 從文件中獲得匹配模式

          -i, --ignore-case 不區(qū)分大小寫

          -w, --word-regexp 匹配整個單詞

          -x, --line-regexp 匹配整行

          -z, --null-data 一個 0 字節(jié)的數(shù)據(jù)行,但不是空行

          雜項:

          -s, --no-messages 不顯示錯誤信息

          -v, --invert-match 顯示不匹配的行

          -V, --version 顯示版本號

          --help 顯示幫助信息

          --mmap use memory-mapped input if possible

          輸入控制:

          -m, --max-count=NUM 匹配的最大數(shù)

          -b, --byte-offset 打印匹配行前面打印該行所在的塊號碼。

          -n, --line-number 顯示的加上匹配所在的行號

          --line-buffered 刷新輸出每一行

          -H, --with-filename 當(dāng)搜索多個文件時,顯示匹配文件名前綴

          -h, --no-filename 當(dāng)搜索多個文件時,不顯示匹配文件名前綴

          --label=LABEL print LABEL as filename for standard input

          -o, --only-matching 只顯示一行中匹配PATTERN 的部分

          -q, --quiet, --silent 不顯示任何東西

          --binary-files=TYPE 假定二進制文件的TYPE 類型;

          TYPE 可以是`binary', `text', 或`without-match'

          -a, --text 匹配二進制的東西

          -I 不匹配二進制的東西

          -d, --directories=ACTION 目錄操作,讀取,遞歸,跳過

          -D, --devices=ACTION 設(shè)置對設(shè)備,F(xiàn)IFO,管道的操作,讀取,跳過

          -R, -r, --recursive 遞歸調(diào)用

          --include=PATTERN 只查找匹配FILE_PATTERN 的文件

          --exclude=PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

          --exclude-from=FILE 跳過所有除FILE 以外的文件

          -L, --files-without-match 匹配多個文件時,顯示不匹配的文件名

          -l, --files-with-matches 匹配多個文件時,顯示匹配的文件名

          -c, --count 顯示匹配了多少次

          -Z, --null 在FILE 文件最后打印空字符

          文件控制:

          -B, --before-context=NUM 打印匹配本身以及前面的幾個行由NUM控制

          -A, --after-context=NUM 打印匹配本身以及隨后的幾個行由NUM控制

          -C, --context=NUM 打印匹配本身以及隨后,前面的幾個行由NUM控制

          -NUM 根-C的用法一樣的

          --color[=WHEN],

          --colour[=WHEN] 使用標(biāo)志高亮匹配字串;

          -U, --binary 使用標(biāo)志高亮匹配字串;

          -u, --unix-byte-offsets 當(dāng)CR 字符不存在,報告字節(jié)偏移(MSDOS 模式)

          例:

          測試文件

          復(fù)制代碼

          代碼如下:

          root:x:0:0:root:/root:/bin/bash

          bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

          DADddd:x:2:2:daemon:/sbin:/bin/false

          mail:x:8:12:mail:/var/spool/mail:/bin/false

          ftp:x:14:11:ftp:/home/ftp:/bin/false

          &nobody:$:99:99:nobody:/:/bin/false

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          http:x:33:33::/srv/http:/bin/false

          dbus:x:81:81:System message bus:/:/bin/false

          hal:x:82:82:HAL daemon:/:/bin/false

          mysql:x:89:89::/var/lib/mysql:/bin/false

          aaa:x:1001:1001::/home/aaa:/bin/bash

          ba:x:1002:1002::/home/zhangy:/bin/bash

          test:x:1003:1003::/home/test:/bin/bash

          @zhangying:*:1004:1004::/home/test:/bin/bash

          policykit:x:102:1005:Po

          a,匹配含有root的行

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# grep root test

          root:x:0:0:root:/root:/bin/bash

          b,匹配以root開頭或者以zhang開頭的行,注意反斜杠

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test |grep '^\(root\|zhang\)'

          root:x:0:0:root:/root:/bin/bash

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          c,匹配以root開頭或者以zhang開頭的行,注意反斜杠,根上面一個例子一樣,-e默認是省去的

          [root@krlcgcms01 test]# cat test |grep -e '^\(root\|zhang\)'

          root:x:0:0:root:/root:/bin/bash

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          d,匹配以zhang開頭,只含有字母

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$'

          zhangying

          e,匹配以bin開頭的行,用的egrep,在這里可以換成-F,-G

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test |grep -E '^bin'

          bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

          f,在匹配的行前面加上該行在文件中,或者輸出中所在的行號

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test|grep -n zhangy

          7:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          13:ba:x:1002:1002::/home/zhangy:/bin/bash

          15:@zhangying:*:1004:1004::/home/test:/bin/bash

          g,不匹配以bin開頭的行,并顯示行號

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test|grep -nv '^bin'

          root:x:0:0:root:/root:/bin/bash

          DADddd:x:2:2:daemon:/sbin:/bin/false

          mail:x:8:12:mail:/var/spool/mail:/bin/false

          ftp:x:14:11:ftp:/home/ftp:/bin/false

          &nobody:$:99:99:nobody:/:/bin/false

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          http:x:33:33::/srv/http:/bin/false

          dbus:x:81:81:System message bus:/:/bin/false

          hal:x:82:82:HAL daemon:/:/bin/false

          mysql:x:89:89::/var/lib/mysql:/bin/false

          aaa:x:1001:1001::/home/aaa:/bin/bash

          ba:x:1002:1002::/home/zhangy:/bin/bash

          test:x:1003:1003::/home/test:/bin/bash

          @zhangying:*:1004:1004::/home/test:/bin/bash

          policykit:x:102:1005:Po

          h,顯示匹配的個數(shù),不顯示內(nèi)容

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test|grep -c zhang

          3

          i,匹配system,沒有加-i沒有匹配到東西。

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# grep system test

          [root@krlcgcms01 test]# grep -ni system test

          9:dbus:x:81:81:System message bus:/:/bin/false

          j,匹配zhan沒有匹配到東西,匹配zhangy能匹配到,因為在test文件中,有zhangy這個單詞

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test|grep -w zhan

          [root@krlcgcms01 test]# cat test|grep -w zhangy

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          ba:x:1002:1002::/home/zhangy:/bin/bash

          k,在這里-x后面東西,和輸出中的整行相同時,才會輸出

          [root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa

          [root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa

          aaaa

          l,最多只匹配一次,如果把-m 1去掉的話,會有三個

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test |grep -m 1 zhang

          zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          m,匹配行的前面顯示塊號,這個塊號是干什么的,不知道,有誰知道可否告訴我一下

          復(fù)制代碼

          代碼如下:

          [apacheuser@krlcgcms01 test]$ cat test |grep -b zha

          241:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

          480:ba:x:1002:1002::/home/zhangy:/bin/bash

          558:@zhangying:*:1004:1004::/home/test:/bin/bash

          n,多文件匹配時,在匹配的行前面加上文件名

          復(fù)制代碼

          代碼如下:

          [apacheuser@krlcgcms01 test]$ grep -H 'root' test test2 testbak

          test:root:x:0:0:root:/root:/bin/bash

          test2:root

          testbak:root:x:0:0:root:/root:/bin/bash

          o,多文件匹配時,在匹配的行前面不加上文件名

          復(fù)制代碼

          代碼如下:

          [apacheuser@krlcgcms01 test]$ grep -h 'root' test test2 testbak

          root:x:0:0:root:/root:/bin/bash

          root

          root:x:0:0:root:/root:/bin/bash

          p,多文件匹配時,顯示匹配文件的文件名

          復(fù)制代碼

          代碼如下:

          [apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta

          test

          test2

          testbak

          q,沒有-o時,有一行匹配,這一行里面有3個root,加上-o后,這個3個root就出來了

          復(fù)制代碼

          代碼如下:

          [apacheuser@krlcgcms01 test]$ grep 'root' test

          root:x:0:0:root:/root:/bin/bash

          [apacheuser@krlcgcms01 test]$ grep -o 'root' test

          root

          root

          root

          r,遞歸顯示匹配的內(nèi)容,在test目錄下面建個mytest目錄,copy test目錄下面的test文件到mytest下面,能看到上面的結(jié)果

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# grep test -R /tmp/test/mytest

          /tmp/test/mytest/test:test:x:1003:1003::/home/test:/bin/bash

          /tmp/test/mytest/test:@zhangying:*:1004:1004::/home/test:/bin/bash

          s,顯示匹配root后面的3行

          復(fù)制代碼

          代碼如下:

          [root@krlcgcms01 test]# cat test |grep -A 3 root

          root:x:0:0:root:/root:/bin/bash

          bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

          daemon:x:2:2:daemon:/sbin:/bin/false

          mail:x:8:12:mail:/var/spool/mail:/bin/false

          fgrep

          用法: fgrep [選項]... PATTERN [FILE]...

          在每個 FILE 或是標(biāo)準(zhǔn)輸入中查找 PATTERN。

          PATTERN 是一組由斷行符分隔的定長字符串。

          例如: fgrep -i 'hello world' menu.h main.c

          正則表達式選擇與解釋:

          -e, --regexp=PATTERN 用 PATTERN 來進行匹配操作

          -f, --file=FILE 從 FILE 中取得 PATTERN

          -i, --ignore-case 忽略大小寫

          -w, --word-regexp 強制 PATTERN 僅完全匹配字詞

          -x, --line-regexp 強制 PATTERN 僅完全匹配一行

          -z, --null-data 一個 0 字節(jié)的數(shù)據(jù)行,但不是空行

          雜項:

          -s, --no-messages 不顯示錯誤信息

          -v, --invert-match 選中不匹配的行

          -V, --version 顯示版本信息并退出

          --help 顯示此幫助并退出

          --mmap 忽略向后兼容性

          Output control:

          -m, --max-count=NUM 匹配的最大數(shù)

          -b, --byte-offset 打印匹配行前面打印該行所在的塊號碼

          -n, --line-number 顯示的加上匹配所在的行號

          --line-buffered 刷新輸出每一行

          -H, --with-filename 當(dāng)搜索多個文件時,顯示匹配文件名前綴

          -h, --no-filename 當(dāng)搜索多個文件時,不顯示匹配文件名前綴

          --label=LABEL use LABEL as the standard input file name prefix

          -o, --only-matching 只顯示一行中匹配PATTERN 的部分

          -q, --quiet, --silent 不顯示所有輸出

          --binary-files=TYPE 假定二進制文件的TYPE 類型;

          TYPE 可以是`binary', `text', 或`without-match'

          -a, --text 等同于 --binary-files=text

          -I 等同于 --binary-files=without-match

          -d, --directories=ACTION 操作目錄的方式;

          ACTION 可以是`read', `recurse',或`skip'

          -D, --devices=ACTION 操作設(shè)備、先入先出隊列、套接字的方式;

          ACTION 可以是`read'或`skip'

          -R, -r, --recursive 等同于 --directories=recurse

          --include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件

          --exclude=FILE_PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

          --exclude-from=FILE 跳過所有除FILE 以外的文件

          --exclude-dir=PATTERN 跳過所有匹配PATTERN 的目錄。

          -L, --files-without-match 只打印不匹配FILEs 的文件名

          -l, --files-with-matches 只打印匹配FILES 的文件名

          -c, --count 只打印每個FILE 中的匹配行數(shù)目

          -T, --initial-tab 行首tabs 分隔(如有必要)

          -Z, --null 在FILE 文件最后打印空字符

          文件控制:

          -B, --before-context=NUM 打印以文本起始的NUM 行

          -A, --after-context=NUM 打印以文本結(jié)尾的NUM 行

          -C, --context=NUM 打印輸出文本NUM 行

          -NUM 等同于 --context=NUM

          --color[=WHEN],

          --colour[=WHEN] 使用標(biāo)志高亮匹配字串;

          WHEN 可以是`always', `never'或`auto'

          -U, --binary 不要清除行尾的CR 字符(MSDOS 模式)

          -u, --unix-byte-offsets 當(dāng)CR 字符不存在,報告字節(jié)偏移(MSDOS 模式)

          ‘fgrep’已不再使用了;請用 ‘grep -F’代替。

          不帶 FILE 參數(shù),或是 FILE 為 -,將讀取標(biāo)準(zhǔn)輸入。如果少于兩個 FILE 參數(shù)

          就要默認使用 -h 參數(shù)。如果選中任意一行,那退出狀態(tài)為 0,否則為 1;

          如果有錯誤產(chǎn)生,且未指定 -q 參數(shù),那退出狀態(tài)為 2。

          例:

          復(fù)制代碼

          代碼如下:

          [root@linux test]# cat abc.sh |fgrep a #匹配含有a的


        看了“Linux文本匹配命令grep與fgrep使用全解”還想看:

        1.linux grep命令詳解

        2.全面解析Linux的grep命令中正則表達式的用法

        3.Linux下如何使用grep命令搜索多個單詞

        4.開發(fā)人員常用什么linux命令

        Linux文本匹配命令grep與fgrep使用全解

        Linux中g(shù)rep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關(guān),是Linux入門學(xué)習(xí)中的基礎(chǔ)知識,接下來是小編為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。 Linux文本匹配命令grep與fgrep使用全解 grep gr
        推薦度:
        點擊下載文檔文檔為doc格式

        精選文章

        • 整理Linux中常用的一些grep命令介紹
          整理Linux中常用的一些grep命令介紹

          grep命令在對一個或多個文件的內(nèi)容進行基于模式的搜索的情況下是非常有用的。模式可以是單個字符、多個字符、單個單詞、或者是一個句子。接下來是小

        • Linux系統(tǒng)中怎么使用grep命令
          Linux系統(tǒng)中怎么使用grep命令

          Linux系統(tǒng)中怎么使用grep命令?Linux系統(tǒng)中有很多命令,想要使用grep命令搜索文本內(nèi)容呢?接下來是小編為大家收集的Linux系統(tǒng)中怎么使用grep命令,希望能幫到

        • 講解Linux下grep命令的使用技巧
          講解Linux下grep命令的使用技巧

          grep命令的使用是Linux入門學(xué)習(xí)中的基礎(chǔ)知識,接下來是小編為大家收集的講解Linux下grep命令的使用技巧,希望能幫到大家。 講解Linux下grep命令的使用技巧

        • 14個grep命令使用例子介紹
          14個grep命令使用例子介紹

          14個grep命令使用例子介紹了查找模式、在多個文件中查找模式、使用-l參數(shù)列出包含指定模式的文件的文件名、使用-n參數(shù),在文件中查找指定模式并顯示匹

        2836809 主站蜘蛛池模板: 忘忧草在线社区www中国中文| 狠狠色香婷婷久久亚洲精品| 成人无码免费视频在线播| 9l久久午夜精品一区二区| 久久夜色精品国产欧美乱极品| 成人国产精品日本在线观看| 四虎成人精品在永久在线| 一本大道久久香蕉成人网| 最新亚洲人成无码网站欣赏网| 国产91特黄特色A级毛片| 亚洲精品日韩中文字幕| 国产精品无遮挡一区二区| 日韩有码中文在线观看| 亚洲人成电影网站 久久影视| 少妇无码AV无码专区| 天天躁日日躁狠狠躁中文字幕| 噜噜噜综合亚洲| 免费观看的av毛片的网站| 日本视频一两二两三区| 久久一日本道色综合久久| 精品国产中文字幕在线| 国产玩具酱一区二区三区| 狂躁女人双腿流白色液体| 极品少妇的粉嫩小泬视频| 国产成人精品视频一区二区三| 亚洲精品国产av一区二区| 亚洲午夜激情久久加勒比| 欧美熟妇乱子伦XX视频| 任我爽精品视频在线播放| 精品无码三级在线观看视频| 在线观看国产久青草| 国产粉嫩一区二区三区av| 一区二区三区四区五区自拍| 久久不见久久见免费视频| 国产午夜亚洲精品不卡网站| 好姑娘6电影在线观看| 国产亚洲欧美精品久久久| 亚洲精品视频久久偷拍| 欧美另类图区清纯亚洲| 久久人妻国产精品| 日韩人妻一区中文字幕|