1. 程式人生 > >Shell命令-文件及內容處理之grep(egrep)、join

Shell命令-文件及內容處理之grep(egrep)、join

--help without 字段 查找文件 標示 egrep ignore lock cat

文件及內容處理 - grep(egrep)、join

1. grep(egrep):文本過濾工具

grep(egrep)命令的功能說明

grep命令是Linux系統中最重要的命令之一,其功能是從文本文件或管道數據流中篩選匹配的行及數據,如果配合正則表達式技術一起使用,則功能更加強大。egrepgrep 的擴展正則,後面講三劍客時會講的。

grep命令的語法格式

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本文件>][--help][範本樣式][文件或目錄...]

grep命令的常用參數說明:

grep 參數很多,表1為 grep 命令的參數及說明:

表1: grep 命令的參數及說明

參數選項 解釋說明
-a 或 --text 不要忽略二進制的數據。
-A<顯示行數> 或 --after-context=<顯示行數> 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
-b 或 --byte-offset 在顯示符合樣式的那一行之前,標示出該行第一個字符的編號。
-B<顯示行數> 或 --before-context=<顯示行數> 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。
-c 或 --count 計算符合樣式的列數。
-C<顯示行數> 或 --context=<顯示行數>或-<顯示行數> 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。
-d <動作> 或 --directories=<動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令將回報信息並停止動作。
-e<範本樣式> 或 --regexp=<範本樣式> 指定字符串做為查找文件內容的樣式。
-E 或 --extended-regexp 將樣式為延伸的普通表示法來使用。
-f<規則文件> 或 --file=<規則文件> 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。
-F 或 --fixed-regexp 將樣式視為固定字符串的列表。
-G 或 --basic-regexp 將樣式視為普通的表示法來使用。
-h 或 --no-filename 在顯示符合樣式的那一行之前,不標示該行所屬的文件名稱。
-H 或 --with-filename 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。
-i 或 --ignore-case 忽略字符大小寫的差別。
-l 或 --file-with-matches 列出文件內容符合指定的樣式的文件名稱。
-L 或 --files-without-match 列出文件內容不符合指定的樣式的文件名稱。
-n 或 --line-number 在顯示符合樣式的那一行之前,標示出該行的列數編號。
-o 或 --only-matching 只顯示匹配PATTERN 部分。
-q 或 --quiet或--silent 不顯示任何信息。
-r 或 --recursive 此參數的效果和指定"-d recurse"參數相同。
-s 或 --no-messages 不顯示錯誤信息。
-v 或 --revert-match 顯示不包含匹配文本的所有行。
-V 或 --version 顯示版本信息。
-w 或 --word-regexp 只顯示全字符合的列。
-x --line-regexp 只顯示全列符合的列。
-y 此參數的效果和指定"-i"參數相同。

grep命令的實踐操作

範例1: –v 參數實踐

[[email protected]  ~]#cat 1.txt
1
2
3
[[email protected]  ~]# grep -v "2" 1.txt
1
3
[[email protected]  ~]#

範例2: -n 參數實踐

[[email protected]  ~]# cat 2.txt
aa
aa
bb
cc
dd
ee
ff
bb
cc
dd
ee
ff
[[email protected]  ~]# grep -n "cc" 2.txt
4:cc
9:cc
[[email protected]  ~]#

範例3: -i參數實踐

[[email protected]  ~]# cat 3.txt
aa
bb
cc
Ab
Ba
cA
bC
[[email protected]  ~]# grep "c" 3.txt
cc
cA
[[email protected]  ~]# grep -i "c" 3.txt
cc
cA
bC
[[email protected]  ~]#

範例4: -E‘--color‘的參數實踐

[[email protected]  ~]# cat 3.txt
aa
bb
cc
Ab
Ba
cA
bC
[[email protected]  ~]# grep -Ei "a|c" 3.txt
aa
cc
Ab
Ba
cA
bC
[[email protected]  ~]# grep -Ei --color=auto "a|c" 3.txt
aa
cc
Ab
Ba
cA
bC
[[email protected]  ~]#

範例5: -c 參數實戰

[[email protected]  ~]# cat 3.txt
aa
bb
cc
Ab
Ba
cA
bC
[[email protected]  ~]# grep -c "c" 3.txt
2
[[email protected]  ~]#

範例6: -o 參數實戰

[[email protected]  ~]# cat 3.txt
aa
bb
cc
Ab
Ba
cA
bC
[[email protected]  ~]# grep -o "c" 3.txt
c
c
c
[[email protected]  ~]#

2. join:按兩個文件的相同字段合並

join命令的功能說明

join 命令用於將兩個文件中,指定欄位內容相同的行連接起來。找出兩個文件中,指定欄位內容相同的行,並加以合並,再輸出到標準輸出設備。

join命令的語法格式

join [OPTION]... FILE1 FILE2
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<欄位>][-2<欄位>][--help][--version][文件1][文件2]

join命令的常用參數說明:

join 參數,表1為 join 命令的參數及說明:

表1: join 命令的參數及說明

參數選項 解釋說明
-a<1或2> 除了顯示原來的輸出內容之外,還顯示指令文件中沒有相同欄位的行。
-e<字符串> 若[文件1]與[文件2]中找不到指定的欄位,則在輸出中填入選項中的字符串。
-i或--igore-case 比較欄位內容時,忽略大小寫的差異。
-o<格式> 按照指定的格式來顯示結果。
-t<字符> 使用欄位的分隔字符。
-v<1或2> 跟-a相同,但是只顯示文件中沒有相同欄位的行。
-1<欄位> 連接[文件1]指定的欄位。
-2<欄位> 連接[文件2]指定的欄位。
--help 顯示幫助。
--version 顯示版本信息。

join命令的實踐操作

範例1: 連接兩個文件。

--------------------------------------------------------------
==>首先查看 testfile_1、testfile_2 中的文件內容<==
--------------------------------------------------------------
[[email protected] ~]# cat testfile_1 
Hello 95
Linux 85  
test 30  
[[email protected] ~]# cat testfile_2 
Hello 2005 
Linux 2009  
test 2006 

--------------------------------------------------------------
==>然後使用join命令,將兩個文件連接<==
--------------------------------------------------------------
[[email protected] ~]#  join testfile_1 testfile_2 
Hello 95 2005
Linux 85 2009  
test 30 2006 

--------------------------------------------------------------
==>文件1與文件2的位置對輸出到標準輸出的結果是有影響的<==
--------------------------------------------------------------
[[email protected] ~]# join testfile_2 testfile_1
Hello 2005 95 
Linux 2009 85  
test 2006 30

今天就寫到這裏,有什麽疑問或出現什麽錯誤,隨時歡迎大神們發表評論指點迷津

Shell命令-文件及內容處理之grep(egrep)、join