Shell命令-文件及內容處理之grep(egrep)、join
1. grep(egrep):文本過濾工具
grep(egrep)命令的功能說明
grep
命令是Linux
系統中最重要的命令之一,其功能是從文本文件或管道數據流中篩選匹配的行及數據,如果配合正則表達式技術一起使用,則功能更加強大。egrep
是grep
的擴展正則,後面講三劍客時會講的。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 FILE2join
[-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