1. 程式人生 > >shell指令碼中的grep命令引數使用方法介紹(轉載)

shell指令碼中的grep命令引數使用方法介紹(轉載)

用‘grep’搜尋文字檔案
如果您要在幾個文字檔案中查詢一字串,可以使用‘grep’命令。‘grep’在文字中搜索指定的字串。舉個例子:假設您正在‘/usr/src/linux/Documentation’目錄下搜尋帶字串‘magic’的檔案:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key? sysrq.txt:* How do I use the magic SysRQ key?

其中檔案‘sysrp.txt’包含該字串,討論的是 SysRQ 的功能。

預設情況下,‘grep’只搜尋當前目錄

。如果此目錄下有許多子目錄,‘grep’會以如下形式列出:
grep: sound: Is a directory
這可能會使‘grep’的輸出難於閱讀。這裡有兩種解決的辦法:
明確要求搜尋子目錄:grep -r
忽略子目錄:grep -d skip

當然,如果預料到有許多輸出,您可以通過 管道
將其轉到‘less’上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供一個檔案過濾方式(搜尋全部檔案的話用*)。如果您忘了,‘grep’會一直等著,直到該程式被中斷。如果您遇到了這樣的情況,按ctrl+c
,然後再試。important!!

下面是一些有意思的命令列引數
grep -i pattern files:不區分大小寫地搜尋。預設情況區分大小寫,
grep -l pattern files :只列出匹配的檔名,
grep -L pattern files :列出不匹配的檔名,
grep -w pattern files:只匹配整個單詞,而不是字串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files:匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2的行,
grep pattern1 files 

grep pattern2 :顯示既匹配 pattern1 又匹配pattern2 的行。

這裡還有些用於搜尋的特殊符號
\< 和 \> 分別標註單詞的開始與結尾。 
例如: 
grep man * 會匹配 ‘Batman’、‘manic’、‘man’等, 
grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’, 
grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字串。 

'^':指匹配的字串在行首, 
'$':指匹配的字串在行尾
, 
如果您不習慣命令列引數,可以試試圖形介面的‘grep’,如 reXgrep 。這個軟體提供 AND、OR、NOT 等語法,還有漂亮的按鈕 :-) 。如果您只是需要更清楚的輸出,不妨試試 fungrep 。

Grep的常用命令語法1. 雙引號引用和單引號引用
在g r e p命令中輸入字串引數時,最好將其用雙引號括起來。例如:”m y s t r i n g”。這樣做有兩個原因,一是以防被誤解為 s h e l l命令,二是可以用來查詢多個單片語成的字串,例如:”jet plane”,如果不用雙引號將其括起來,那麼單詞 p l a n e將被誤認為是一個檔案,查詢結果將返回”檔案不存在”的錯誤資訊。
在呼叫變數時,也應該使用雙引號,諸如: g r e p”$ M Y VA R”檔名,如果不這樣,將
沒有返回結果。
在呼叫模式匹配時,應使用單引號.[[email protected] ]# echo `grep 123 111.txt`  (#注意是反單引號)

2. 常用的g r e p選項有:
-c   只輸出匹配行的計數。
-i   不區分大小寫(只適用於單字元)。
-h   查詢多檔案時不顯示檔名。
-l   查詢多檔案時只輸出包含匹配字元的檔名。
-n   顯示匹配行及行號。
-s   不顯示不存在或無匹配文字的錯誤資訊。
-v   顯示不包含匹配文字的所有行。 如平:ps -ef|grep java -v grep 該命令忽略包含grep的命令列

3. 特殊的–在多個檔案中進行查詢
$ grep “sort”*.doc     ( #在當前目錄下所有. d o c檔案中查詢字串”s o r t”)
 
$ grep “sort it” *      (#或在所有檔案中查詢單詞”sort it”)
接下來的所有示例是指在單個檔案中進行查詢
4. 行匹配
$ grep -c “48″ data.f
$ 4                      (#g r e p返回數字4,意義是有4行包含字串”4 8″。)
$ grep “48″ data.f          (#顯示包含”4 8″字串的4行文字)

5. 顯示滿足匹配模式的所有行行數:
[[email protected] oid2000]# grep -n 1234 111.txt
1:1234
3:1234ab

6. 精確匹配
[[email protected] oid2000]# grep “1234\>” 111.txt
1234

7. 查詢空行,查詢以某個條件開頭或者結尾的行。
結合使用^和$可查詢空行。使用- n引數顯示實際行數
[[email protected] oid2000]# grep -n “^$” 111.txt    (返回結果 2:   #說明第二行是空行)
[[email protected] oid2000]# grep -n “^abc” 111.txt (#查詢以abc開頭的行)
[[email protected] oid2000]# grep -n “abc$” 111.txt  (#查詢以abc結尾的行)

8. 匹配特殊字元,查詢有特殊含義的字元,諸如$ . ‘ ” * [] ^ | \ + ? ,必須在特定字元前加\。
[[email protected] oid2000]# grep  “\.” 111.txt  (#在111.txt中查詢包含”.”的所有行)
[[email protected] oid2000]# grep  “my\.conf”  111.txt (#查詢有檔名my. c o n f的行)

9. 目錄的查詢
[[email protected] oid2000]# ls -l |grep “^d”      (#如果要查詢目錄列表中的目錄)
[[email protected] oid2000]# ls -l |grep “^d[d]“    (#在一個目錄中查詢不包含目錄的所有檔案)
[[email protected]]# ls -l |grpe “^d…..x..x” (#查詢其他使用者和使用者組成員有可執行許可權的目錄集合)

相關推薦

shell指令碼grep命令引數使用方法介紹轉載

用‘grep’搜尋文字檔案如果您要在幾個文字檔案中查詢一字串,可以使用‘grep’命令。‘grep’在文字中搜索指定的字串。舉個例子:假設您正在‘/usr/src/linux/Documentation’目錄下搜尋帶字串‘magic’的檔案: $ grep magic /u

Rsync命令引數詳解轉載

在對rsync伺服器配置結束以後,下一步就需要在客戶端發出rsync命令來實現將伺服器端的檔案備份到客戶端來。rsync是一個功能非常強大的工具,其命令也有很多功能特色選項,我們下面就對它的選項一一進行分析說明。 Rsync的命令格式可以為以下六種: 1 rsync

linux shell指令碼cd命令無效的解決方法

      今天需要快速切換目錄,然後在sh腳本里面加入cd,但發現執行後無效。原因就不深究了。然後查了一下,有三種解決方案。       方案一、source ./    格式   例如:so

學習Linux shell指令碼連線字串的方法

這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果

shell 指令碼獲取命令的輸出

這個主要介紹的方法是獲取命令的輸出內容,而不是命令執行成功與否的返回值。 通常情況下,在shell指令碼中需要獲取命令的輸出內容,然後根據輸出內容判斷下一步的執行操作。 比較常用的一種方式就是, 匹配命令輸出的內容中是否存在某些關鍵字,選擇執行的不同動作。 比較常用的一種方式就是

解決 shell指令碼SCP命令需要輸入密碼的問題

本文轉自:https://blog.csdn.net/u012454773/article/details/72779439 使用金鑰檔案,兩臺機器建立信任 這裡假設主機A(192.168.100.3)用來獲得主機B(192.168.100.4)的檔案。 在主機A上執行如下命令來生成配對金鑰:

linux下shell指令碼sed命令使用變數

用linpack做測試,寫了一個指令碼, 因為每次可修改的引數寫在了配置檔案裡,所以腳本里用sed命令來修改配置檔案#測試次數echo “Input Number of tests:”read numt#每次測試的資料規模,測試次數有多少次,這裡應該又多少組數字,中間以空格隔

Shell指令碼cd命令使用

在寫shell指令碼的時候發現cd切換目錄的時候無法切換,程式碼是下面的。 #!/bin/bash #changedir.sh cd /home/firefox pwd我仔細一想,我執行的時候是./changedir.sh來執行的,這樣執行的話終端會產生一個子shell,子

Linux shell指令碼執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題

Linux shell指令碼中執行命令結果賦值給變數&&echo輸出變數是否包含換行符的問題 echo $ret 和 echo "$ret" 區別: 如果是echo $ret,輸出結果為一行,沒有換行符 如果是echo "$ret",輸出結果為多行,有換行符

shell指令碼cd命令無效的解決方案

在學習的時候,經常要切換到固定的資料夾,於是寫了個shell指令碼用cd命令切換卻發現目錄切換不了。 程式碼如下: #! /bin/bash # c.sh cd /mnt/hgfs/vmsha

shell指令碼的if 引數-a至-z

[-a file] 如果file存在則為真  不過貌似有時候-a表示為and:條件與 [-b file] 如果file存在且是一個塊特殊檔案則為真 [-c file] 如果file存在且是一個字特殊檔案則為真 [-d file] 如果file檔案存在且是一個目錄則為真 -d

Shell指令碼make命令的使用

    (最近開發的專案中需要編寫Shell指令碼對整個工程進行自動化編譯,即在Shell

shell指令碼的if條件語句介紹和使用案例

#前言:在生產工作中if條件語句是最常使用的,如使用來判斷服務狀態,監控伺服器的CPU,記憶體,磁碟等操作,所以我們需要熟悉和掌握if條件語句。  簡介 if條件語句,簡單來說就是:如果,那麼。有if單分支結構,雙分支結構,多分支結構   1.單分支結構 #語法結構: if <

shell指令碼的case條件語句介紹和使用案例

#前言:這篇我們接著寫shell的另外一個條件語句case,上篇講解了if條件語句。case條件語句我們常用於實現系統服務啟動指令碼等場景,case條件語句也相當於if條件語句多分支結構,多個選擇,case看起來更規範和易讀   #case條件語句的語法格式 case "變數" in 值1

局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介紹

false 這樣的 rds 場景 創建 大量 net bsp 好處 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介紹 本文主要介紹一種用於海量高維數據的近似最近鄰快速查找技術——局部敏感哈希(Locality-Sensitive Has

機器學習之numpy庫常用的函數介紹

做的 string idt 維度 數據 round float 數值 array 1. mat() mat()與array的區別: mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。 array是數組,數據可以是多

提高人體骨骼建模方法介紹

3D圖形繪制軟件 人體骨骼 建模 制作醫療插圖的時候,有個全面的人體3D骨骼模型會有很大的幫助,與傳統技術相比,擁有旋轉模型,從各個角度渲染模型的技能尤為重要,還節省了大量時間。通過隱藏或剪切單個肌肉、器官和血管,它還可以用作為很多插圖的基礎,本質上是創建了不同級別的解剖。 ZB

提高人體骨骼建模方法介紹

3D圖形繪制軟件 人體骨骼 建模 制作醫療插圖的時候,有個全面的人體3D骨骼模型會有很大的幫助,與傳統技術相比,擁有旋轉模型,從各個角度渲染模型的技能尤為重要,還節省了大量時間。通過隱藏或剪切單個肌肉、器官和血管,它還可以用作為很多插圖的基礎,本質上是創建了不同級別的解剖。 ZB

Python3常用資料結構及方法介紹——字串

三.字串 特點:不可更改 1.基本操作(同其他序列) ①索引 >>> 'python'[2] 't' ②分片 >>> 'beauty'[0:2] 'be' >>> 'beauty'[::2] 'bat' ③相加/相乘

Python3常用資料結構及方法介紹——元組

二.元組 tuple 1特點: ①元組不可更改 ②圓括號 ③可重新賦值 >>> tuple0=(1,2,3) >>> tuple0=(2,3,4,1) >>> tuple0 (2, 3, 4, 1) 2常用元組操作(與列表類