1. 程式人生 > >Linux 通過grep命令篩選過濾

Linux 通過grep命令篩選過濾

grep命令語法

grep [option] pattern file

命令說明

通過grep命令能對特定字元進行篩選,得到我們期望的效果(過濾/搜尋),grep全稱是Global Regular Expression Print

命令引數

-a 不要忽略二進位制資料。
-A<顯示列數> 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容。
-b 在顯示符合範本樣式的那一行之外,並顯示該行之前的內容。
-c 計算符合範本樣式的列數。
-C<顯示列數>或-<顯示列數> 除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。
-d<進行動作> 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep命令將回報資訊並停止動作。
-e<範本樣式> 指定字串作為查詢檔案內容的範本樣式。
-E 將範本樣式為延伸的普通表示法來使用,意味著使用能使用擴充套件正則表示式。
-f<範本檔案> 指定範本檔案,其內容有一個或多個範本樣式,讓grep查詢符合範本條件的檔案內容,格式為每一列的範本樣式。
-F 將範本樣式視為固定字串的列表。
-G 將範本樣式視為普通的表示法來使用。
-h 在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。
-H 在顯示符合範本樣式的那一列之前,標示該列的檔名稱。
-i 忽略字元大小寫的差別。
-l 列出檔案內容符合指定的範本樣式的檔名稱。
-L 列出檔案內容不符合指定的範本樣式的檔名稱。
-n 在顯示符合範本樣式的那一列之前,標示出該列的編號。
-q 不顯示任何資訊。
-R/-r 此引數的效果和指定“-d recurse”引數相同。
-s 不顯示錯誤資訊。
-v 反轉查詢。
-w 只顯示全字符合的列。
-x 只顯示全列符合的列。
-y 此引數效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。

實際例子

以下是grep.log供實際例子使用

[root@rhel66x64 work]# cat grep.log
Regexp selection and interpretation:
 -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings

#Example: grep -i 'hello world' menu.h main.c
hello world [root@rhel66x64 work]#
  • 顯示過濾掉空行,以及#和-開頭的行資訊(-E前有空格,所以沒有被過濾掉)
[root@rhel66x64 work]# grep -Ev "^$|^[#-]" grep.log
Regexp selection and interpretation:
 -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
      hello world
[root@rhel66x64 work]#
  • 在多個檔案中查詢,以及遞迴查詢
[root@rhel66x64 work]# grep  "hello world" grep.log grep1.log grep2.log
grep.log:#Example: grep -i 'hello world' menu.h main.c
grep.log:      hello world
grep1.log:#Example: grep -i 'hello world' menu.h main.c
grep1.log:      hello world
grep2.log:#Example: grep -i 'hello world' menu.h main.c
grep2.log:      hello world
[root@rhel66x64 work]#
[root@rhel66x64 work]# grep "hello world" . -r -n
./grep2.log:5:#Example: grep -i 'hello world' menu.h main.c
./grep2.log:6:      hello world
./1/grep1-1.log:5:#Example: grep -i 'hello world' menu.h main.c
./1/grep1-1.log:6:      hello world
./1/2/3/4/grep1-4.log:5:#Example: grep -i 'hello world' menu.h main.c
./1/2/3/4/grep1-4.log:6:      hello world
./1/2/3/grep1-3.log:5:#Example: grep -i 'hello world' menu.h main.c
./1/2/3/grep1-3.log:6:      hello world
./1/2/grep1-2.log:5:#Example: grep -i 'hello world' menu.h main.c
./1/2/grep1-2.log:6:      hello world
./grep1.log:5:#Example: grep -i 'hello world' menu.h main.c
./grep1.log:6:      hello world
./grep.log:5:#Example: grep -i 'hello world' menu.h main.c
./grep.log:6:      hello world
[root@rhel66x64 work]#
  • 只輸出文件中匹配到的部分
[root@rhel66x64 work]# grep -o "hello world" grep.log
hello world
hello world
  • 輸出包含匹配字串的行數以及其內容
[root@rhel66x64 work]# grep -n "hello world" grep.log
5:#Example: grep -i 'hello world' menu.h main.c
6:      hello world
[root@rhel66x64 work]#
  • 統計檔案或者文字中包含匹配字串的行數
[root@rhel66x64 work]# grep -c "hello world" grep.log
2
  • 多條件篩選實現or功能()
[[email protected] work]# grep "#\|-" grep.log
 -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings
#Example: grep -i 'hello world' menu.h main.c

egrep 命令等同於‘grep -E’

[root@rhel66x64 work]# grep -E "#|Regexp" grep.log
Regexp selection and interpretation:
#Example: grep -i 'hello world' menu.h main.c
[root@rhel66x64 work]# grep -e "#" -e "Regexp" grep.log
Regexp selection and interpretation:
#Example: grep -i 'hello world' menu.h main.c
  • 多條件篩選實現and功能
[[email protected] work]# grep -E "Regexp.*and.*tion:" grep.log
Regexp selection and interpretation:
[root@rhel66x64 work]# grep -E "hello world" grep.log | grep -E "#"
#Example: grep -i 'hello world' menu.h main.c
  • 多條件篩選實現not功能
[[email protected] work]# grep -Ev "hello|Regexp" grep.log
 -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings

  • 靜默輸出,通過獲取其返回值來判斷是否存在某字元
[root@rhel66x64 work]# grep -q "hello" grep.log
[root@rhel66x64 work]# echo $?
0
[root@rhel66x64 work]# grep -q "xxxxxxx" grep.log
[root@rhel66x64 work]# echo $?
1
  • 結合xargs做簡單刪除檔案的操作(grep輸出用-Z選項來指定以0值位元組作為終結符檔名(\0),xargs -0 讀取輸入並用0值位元組終結符分隔檔名,然後刪除匹配檔案,-Z通常和-l結合使用。)
[root@rhel66x64 work]# ls -l grep*
-rw-r--r--. 1 root root 255 May 12 18:04 grep.log
-rw-r--r--. 1 root root 255 May 12 18:04 grep1.log
-rw-r--r--. 1 root root 255 May 12 18:04 grep2.log
[root@rhel66x64 work]# grep "hello" grep* -lZ |xargs -0 rm
[root@rhel66x64 work]# ls -l grep*
ls: cannot access grep*: No such file or directory

一些符號含義

\:忽略正則表示式中特殊字元的原有含義。
^:匹配正則表示式的開始行。
$: 匹配正則表示式的結束行。
<:從匹配正則表示式的行開始。
>:到匹配正則表示式的行結束。
[ ]:單個字元,如[A]A符合要求 。
[ - ]:範圍,如[A-Z],即ABC一直到Z都符合要求 。
。:所有的單個字元。
* :有字元,長度可以為0。

注:
在輸入要搜尋的字串時最好使用雙引號/而在模式匹配使用正則表示式時,注意使用單引號

相關推薦

Linux 通過grep命令篩選過濾

grep命令語法 grep [option] pattern file 命令說明 通過grep命令能對特定字元進行篩選,得到我們期望的效果(過濾/搜尋),grep全稱是Global Regular Expression Print 命令引數

linuxgrep命令

出行 red 文本搜索 grep命令 cin spa 組合 方式 小數 grep 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。 grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] ‘搜尋字

Linux find,grep命令

訪問時間 字符 查找 tex 一次 文件大小 自己 大小寫 0kb find使用: 列出當前目錄及子目錄下所有文件和文件夾 find . 在/home目錄下查找以.txt結尾的文件名 find /home -name "*.txt" 同上,但忽略大

Linuxgrep命令

linu global 轉義 命令 點號 正則表達式grep -- ole 前三 global search regular expression(RE) and print out the line 一、命令形式 1. grep -n --color=auto ‘st

linux使用grep命令根據檔案內容搜素檔案

如果你想在當前目錄下 查詢"hello,world!"字串,可以這樣: grep -rn "hello,world!" * 命令格式: grep -[選項] “pattern” 檔案或目錄 選項 含義

linuxgrep命令的用法

作為linux中最為常用的三大文字(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。 首先談一下grep命令的常用格式為:grep  [選項]  ”模式“  [檔案] grep家族總共有三個:grep,egrep,fgrep。 常用選項:   -

Linuxgrep命令詳解

簡介 grep (global search regular expression(RE) and print out the line,根據正則表示式進行全域性搜尋並把匹配行打印出來)是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。 Unix

Linuxgrep命令,用或的關係查詢多個字串,正則表示式基礎說明

使用 grep 'word1|word2' 檔名  這樣的命令是不對的! 應該使用如下的命令:1,grep -E 'word1|word2' 檔名 2,egrep 'word1|word2' 檔名 3

linux使用grep命令根據字串查詢日誌中關鍵詞出現的位置

進入到logs日誌目錄,執行類似以下的命令: cat -n catalina.out |grep '053574ccc432403c9762ac1372a7c7' 便可得到053574ccc432403c9762ac1372a7c7出現的日誌輸出語句,可見下圖

linux 通過哪個命令可以檢視某個服務及其埠、程序號

netstat/lsof netstat命令用於顯示與IP、TCP、UDP和ICMP協議相關的統計資料,一般用於檢驗本機各埠的網路連線情況 -a 顯示一個所有的有效連線資訊列表(包括已建立的連線,也包括監聽連線請求的那些連線) -n 顯示所有已建立的有效連線 -t tcp協

Linux通過sar命令檢視網絡卡流量

sar命令引數很多,有時間man一下。 -n引數很有用,他有6個不同的開關:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV顯示網路介面資訊,EDEV顯示關於網路錯誤的統計資料,NFS統計活動的NFS客戶端的資訊,NFSD統計NFS伺服器

Linux通過netstat命令檢視80埠連線數的方法

伺服器上的一些統計資料:   1)統計80埠連線數   netstat -nat|grep -i “80”|wc -l   2)統計httpd協議連線數   ps -ef|grep httpd|wc -l   3)、統計已連線上的,狀態為“established

Linux 使用grep篩選多個條件及grep常用過濾命令

cat log.txt | grep 條件;  cat log.txt | grep 條件一 | grep 條件二;  cat log.txt | grep 條件一 | grep 條件二 | grep 條件三; grep 條件一 log.txt | grep 條件二 | gr

Linux服務器通過aws命令行上傳文件至S3

aws linux s3 上傳文件目的Linux服務器通過AWS命令行上傳文件至S3配置打開你的AWS控制臺;連接你的Linux服務器,按照以下步驟操作;# 安裝pip yum -y install python-pip # 安裝awscli pip install awscli # 初始化配置 aw

Linux通過find命令進行rm文件刪除的小技巧

ase test sysconfig ger sdn tun 執行過程 fun alt 我們常常會通過find命令進行批量操作。如:批量刪除舊文件、批量改動、基於時間的文件統計、基於文件大小的文件統計等。在這些操作其中,因為rm刪除操作會導致文件夾結構變化,

find & grep 命令 in linux(轉)

for one group mathjax 現在 preview 管道 splay 提高效率 Linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:

linux 歷史(histroy)命令記錄過濾

histroy通過設置關於歷史命令的環境變量來達到過濾的目錄,並且還可以添加時間戳。以下的方法都可以添加進環境變量文件中來達到永久生效。給歷史命令添加時間戳:export HISTTIMEFORMAT=‘%F %T‘使用ctrl+R搜索歷史。歷史命令記錄的數量export HISTSIZE=450export

Linux find、grep命令詳細用法

標準輸出 獲取參數 返回 管道 每一個 作用 實例 文件名 opts 在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:find命令 find命令的一般形式

通過IP歸屬地過濾Linux服務器端口流量

歸屬地 linux 過濾 一、IP歸屬地數據庫中導出需要的地址段列表二、安裝ipset三、建立access白名單ipset create access hash:net四、導入IP地址use strict; open INPUT,"output.txt"; while (<INPUT>

Linux進階命令grep查找字符串

linux grep 目的:使用grep命令來查找文件中符合條件的字符串格式:grep 【選項】 【查找模式】 【文件名】查找字符串時希望顯示如下內容:1)所在的文件名-------------------------grep在查找時默認已經顯示目標文件名2)所在的行號--