當前位置:首頁 » 操作系統 » linuxcatgrep

linuxcatgrep

發布時間: 2022-11-19 07:22:58

linux的grep查詢命令

grep默認只能識別基本的正則表達式,如果需要高級的,需要這樣:
grep -E 'A.*B|B.*A' filename
可以找到符合要求的,或者使用awk:
awk '/A/&&/B/' filename

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

Linux中grep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關,是Linux入門學習中的基礎知識,接下來是我為大家收集的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的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到屏幕,不影響原文件內容。

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

grep --help

匹配模式選擇:

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

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

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

-P, --perl-regexp 調用的perl正則

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

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

-i, --ignore-case 不區分大小寫

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

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

-z, --null-data 一個 0 位元組的數據行,但不是空行

雜項:

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

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

-V, --version 顯示版本號

--help 顯示幫助信息

--mmap use memory-mapped input if possible

輸入控制:

-m, --max-count=NUM 匹配的最大數

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

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

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

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

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

--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 設置對設備,FIFO,管道的操作,讀取,跳過

-R, -r, --recursive 遞歸調用

--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] 使用標志高亮匹配字串;

-U, --binary 使用標志高亮匹配字串;

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

例:

測試文件

復制代碼

代碼如下:

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的行

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep root test

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

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

復制代碼

代碼如下:

[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開頭,只含有字母

復制代碼

代碼如下:

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

zhangying

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

復制代碼

代碼如下:

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

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

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開頭的行,並顯示行號

復制代碼

代碼如下:

[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,顯示匹配的個數,不顯示內容

復制代碼

代碼如下:

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

3

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

復制代碼

代碼如下:

[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這個單詞

復制代碼

代碼如下:

[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去掉的話,會有三個

復制代碼

代碼如下:

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

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

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

復制代碼

代碼如下:

[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,多文件匹配時,在匹配的行前面加上文件名

復制代碼

代碼如下:

[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,多文件匹配時,在匹配的行前面不加上文件名

復制代碼

代碼如下:

[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,多文件匹配時,顯示匹配文件的文件名

復制代碼

代碼如下:

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

test

test2

testbak

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

復制代碼

代碼如下:

[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,遞歸顯示匹配的內容,在test目錄下面建個mytest目錄, test目錄下面的test文件到mytest下面,能看到上面的結果

復制代碼

代碼如下:

[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行

復制代碼

代碼如下:

[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 或是標准輸入中查找 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 位元組的數據行,但不是空行

雜項:

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

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

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

--help 顯示此幫助並退出

--mmap 忽略向後兼容性

Output control:

-m, --max-count=NUM 匹配的最大數

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

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

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

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

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

--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 操作設備、先入先出隊列、套接字的方式;

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 中的匹配行數目

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

-Z, --null 在FILE 文件最後列印空字元

文件控制:

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

-A, --after-context=NUM 列印以文本結尾的NUM 行

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

-NUM 等同於 --context=NUM

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

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

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

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

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

不帶 FILE 參數,或是 FILE 為 -,將讀取標准輸入。如果少於兩個 FILE 參數

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

如果有錯誤產生,且未指定 -q 參數,那退出狀態為 2。

例:

復制代碼

代碼如下:

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

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

1. linux grep命令詳解

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

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

4. 開發人員常用什麼linux命令

Ⅲ Linux常用命令

1.grep:找出文件中含有關鍵字的行

2.cat:讀取,顯示或拼接文件內容

3.head:查看文件前多少行,默認為10行

4.less:使文件內容可以翻頁顯示,按q退出觀看模式

5.sed :文本替換

6.vi:創建文件並寫入內容

點擊鍵盤上的「i」鍵,進入編輯狀態 ,如果看到底部出現「插入」兩字,表示成功進入編輯狀態,此時就可以在文件中輸入你想要輸入的內容了

輸入想插入的內容,輸入完成後點擊鍵盤上的「esc」鍵,退出編輯

輸入:wq,點擊回車,退出並保存

查看剛才是否些文件成功

7.%操作符,#操作符:根據拓展名切分文件名,「名稱.擴展名」
有一些腳本是依據文件名進行各種處理的。我們可能會需要在保留擴展名的同時修改文件名,轉換文件格式或提取部分文件名。

Ⅳ linux指令 tail,grep和cat的區別

tail直接輸出指定的行到屏幕上(他參考行號輸出)
grep搜索文本所在行並且輸出(他參考搜索內容)
cat輸出一個文本(說實話,這玩意是個很簡單的列印內容到屏幕上)

Ⅳ linux常用命令有哪些

  • 01

    linux常用命令有pwd命令、cd命令、ls命令、cat命令、grep命令、touch命令、cp命令、mv命令、rm命令、rmdir命令等。

    linux常用命令:

    1、 pwd命令

    該命令的英文解釋為print working directory(列印工作目錄)。輸入pwd命令,Linux會輸出當前目錄。

    2、 cd命令

    cd命令用來改變所在目錄。

    cd / 轉到根目錄中

    cd ~ 轉到/home/user用戶目錄下

    cd /usr 轉到根目錄下的usr目錄中-------------絕對路徑

    cd test 轉到當前目錄下的test子目錄中-------相對路徑

    3、 ls命令

    ls命令用來查看目錄的內容。 選項 含義 -a 列舉目錄中的全部文件,包括隱藏文件 -l 列舉目錄中的細節,包括許可權、所有者、組群、大小、創建日期、文件是否是鏈接等 -f 列舉的文件顯示文件類型 -r 逆向,從後向前地列舉目錄中內容 -R 遞歸,該選項遞歸地列舉當前目錄下所有子目錄內的內容 -s 大小,按文件大小排序 -h 以人類可讀的方式顯示文件的大小,如用K、M、G作單位 ls -l examples.doc 列舉文件examples.doc的所有信息

    4、 cat命令

    cat命令可以用來合並文件,也可以用來在屏幕上顯示整個文件的內容。

    cat snow.txt 該命令顯示文件snow.txt的內容,ctrl+D退出cat。

    5、 grep命令

    grep命令的最大功能是在一堆文件中查找一個特定的字元串。

    grep money test.txt

    以上命令在test.txt中查找money這個字元串,grep查找是區分大小寫的。

    6 、touch命令

    touch命令用來創建新文件,他可以創建一個空白的文件,可以在其中添加文本和數據。

    touch newfile 該命令創建一個名為newfile的空白文件。

    7 、cp命令

    cp命令用來拷貝文件,要復制文件,輸入命令:

    cp

    cp t.txt Document/t 該命令將把文件t.txt復制到Document目錄下,並命名為t。 選項 含義 -i 互動:如果文件將覆蓋目標中的文件,他會提示確認 -r 遞歸:這個選項會復制整個目錄樹、子目錄以及其他 -v 詳細:顯示文件的復制進度

    8 、mv命令

    mv命令用來移動文件。 選項 說明 -i 互動:如果選擇的文件會覆蓋目標中的文件,他會提示確認 -f 強制:它會超越互動模式,不提示地移動文件,屬於很危險的選項 -v 詳細:顯示文件的移動進度

    mv t.txt Document 把文件t.txt 移動到目錄Document中。

    9 、rm命令

    rm命令用來刪除文件。 選項 說明 -i 互動:提示確認刪除 -f 強制:代替互動模式,不提示確認刪除 -v 詳細:顯示文件的刪除進度 -r 遞歸:將刪除某個目錄以及其中所有的文件和子目錄

    rm t.txt 該命令刪除文件t.txt

    10、 rmdir命令

    rmdir命令用來刪除目錄。

Ⅵ Linux常用指令---grep(搜索過濾)(轉)

Linux常用指令---grep(搜索過濾) (轉)

Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行列印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用許可權是所有用戶。

grep的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到標准輸出,不影響原文件內容。

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

1.命令格式:

grep [option] pattern file

2.命令功能:

用於過濾/搜索的特定字元。可使用正則表達式能多種命令配合使用,使用上十分靈活。

3.命令參數:

-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   #在顯示符合樣式的那一行之前,標示出該行的列數編號。   

-q   --quiet或--silent   #不顯示任何信息。   

-r   --recursive   #此參數的效果和指定「-d recurse」參數相同。   

-s   --no-messages   #不顯示錯誤信息。   

-v   --revert-match   #顯示不包含匹配文本的所有行。   

-V   --version   #顯示版本信息。   

-w   --word-regexp   #只顯示全字元合的列。   

-x    --line-regexp   #只顯示全列符合的列。   

-y   #此參數的效果和指定「-i」參數相同。

4.規則表達式:

grep的規則表達式:

^  #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。    

$  #錨定行的結束 如:'grep$'匹配所有以grep結尾的行。    

.  #匹配一個非換行符的字元 如:'gr.p'匹配gr後接一個任意字元,然後是p。    

*  #匹配零個或多個先前字元 如:'*grep'匹配所有一個或多個空格後緊跟grep的行。    

.*   #一起用代表任意字元。   

[]   #匹配一個指定范圍內的字元,如'[Gg]rep'匹配Grep和grep。    

[^]  #匹配一個不在指定范圍內的字元,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。    

\(..\)  #標記匹配字元,如'\(love\)',love被標記為1。    

\<      #錨定單詞的開始,如:'\

\>      #錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。    

x\{m\}  #重復字元x,m次,如:'0\{5\}'匹配包含5個o的行。    

x\{m,\}  #重復字元x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。    

x\{m,n\}  #重復字元x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。   

\w    #匹配文字和數字字元,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字元,然後是p。   

\W    #\w的反置形式,匹配一個或多個非單詞字元,如點號句號等。   

\b    #單詞鎖定符,如: '\bgrep\b'只匹配grep。  

POSIX字元:

為了在不同國家的字元編碼中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字元類,如[:alnum:]是[A-Za-z0-9]的另一個寫法。要把它們放到[]號內才能成為正則表達式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字元類。

[:alnum:]    #文字數字字元   

[:alpha:]    #文字字元   

[:digit:]    #數字字元   

[:graph:]    #非空字元(非空格、控制字元)   

[:lower:]    #小寫字元   

[:cntrl:]    #控制字元   

[:print:]    #非空字元(包括空格)   

[:punct:]    #標點符號   

[:space:]    #所有空白字元(新行,空格,製表符)   

[:upper:]    #大寫字元   

[:xdigit:]   #十六進制數字(0-9,a-f,A-F)  

5.使用實例:

實例1:查找指定進程

命令:

ps -ef|grep svn

輸出:

[root@localhost ~]# ps -ef|grep svn

root 4943   1      0  Dec05 ?   00:00:00 svnserve -d -r /opt/svndata/grape/

root 16867 16838  0 19:53 pts/0    00:00:00 grep svn

[root@localhost ~]#

說明:

第一條記錄是查找出的進程;第二條結果是grep進程本身,並非真正要找的進程。

實例2:查找指定進程個數

命令:

ps -ef|grep svn -c

ps -ef|grep -c svn

輸出:

[root@localhost ~]# ps -ef|grep svn -c

2

[root@localhost ~]# ps -ef|grep -c svn 

2

[root@localhost ~]#

說明:

實例3:從文件中讀取關鍵詞進行搜索

命令:

cat test.txt | grep -f test2.txt

輸出:

[root@localhost test]# cat test.txt 

hnlinux

peida.cnblogs.com

ubuntu

ubuntu linux

redhat

Redhat

linuxmint

[root@localhost test]# cat test2.txt 

linux

Redhat

[root@localhost test]# cat test.txt | grep -f test2.txt

hnlinux

ubuntu linux

Redhat

linuxmint

[root@localhost test]#

說明:

輸出test.txt文件中含有從test2.txt文件中讀取出的關鍵詞的內容行

實例3:從文件中讀取關鍵詞進行搜索 且顯示行號

命令:

cat test.txt | grep -nf test2.txt

輸出:

[root@localhost test]# cat test.txt 

hnlinux

peida.cnblogs.com

ubuntu

ubuntu linux

redhat

Redhat

linuxmint

[root@localhost test]# cat test2.txt 

linux

Redhat

[root@localhost test]# cat test.txt | grep -nf test2.txt

1:hnlinux

4:ubuntu linux

6:Redhat

7:linuxmint

[root@localhost test]#

說明:

輸出test.txt文件中含有從test2.txt文件中讀取出的關鍵詞的內容行,並顯示每一行的行號

實例5:從文件中查找關鍵詞

命令:

grep 'linux' test.txt

輸出:

[root@localhost test]# grep 'linux' test.txt 

hnlinux

ubuntu linux

linuxmint

[root@localhost test]# grep -n 'linux' test.txt 

1:hnlinux

4:ubuntu linux

7:linuxmint

[root@localhost test]#

說明:

實例6:從多個文件中查找關鍵詞

命令:

grep 'linux' test.txt test2.txt

輸出:

[root@localhost test]# grep -n 'linux' test.txt test2.txt 

test.txt:1:hnlinux

test.txt:4:ubuntu linux

test.txt:7:linuxmint

test2.txt:1:linux

[root@localhost test]# grep 'linux' test.txt test2.txt 

test.txt:hnlinux

test.txt:ubuntu linux

test.txt:linuxmint

test2.txt:linux

[root@localhost test]#

說明:

多文件時,輸出查詢到的信息內容行時,會把文件的命名在行最前面輸出並且加上":"作為標示符

實例7:grep不顯示本身進程

命令:

ps aux|grep \[s]sh

ps aux | grep ssh | grep -v "grep"

輸出:

[root@localhost test]# ps aux|grep ssh

root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd

root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0 

root  16901  0.0  0.0  61180   764 pts/0  S+   20:31   0:00 grep ssh

[root@localhost test]# ps aux|grep \[s]sh]

[root@localhost test]# ps aux|grep \[s]sh

root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd

root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0 

[root@localhost test]# ps aux | grep ssh | grep -v "grep"

root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd

root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0

說明:

實例8:找出已u開頭的行內容

命令:

cat test.txt |grep ^u

輸出:

[root@localhost test]# cat test.txt |grep ^u

ubuntu

ubuntu linux

[root@localhost test]#

說明:

實例9:輸出非u開頭的行內容

命令:

cat test.txt |grep ^[^u]

輸出:

[root@localhost test]# cat test.txt |grep ^[^u]

hnlinux

peida.cnblogs.com

redhat

Redhat

linuxmint

[root@localhost test]#

說明:

實例10:輸出以hat結尾的行內容

命令:

cat test.txt |grep hat$

輸出:

[root@localhost test]# cat test.txt |grep hat$

redhat

Redhat

[root@localhost test]#

說明:

實例11:輸出ip地址

命令:

     ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]"

輸出:

[root@localhost test]# ifconfig eth0|grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0

[root@localhost test]# ifconfig eth0|grep -E "([0-9]{1,3}\.){3}[0-9]"

          inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0

[root@localhost test]#

說明:

實例12:顯示包含ed或者at字元的內容行

命令:

cat test.txt |grep -E "ed|at"

輸出:

[root@localhost test]# cat test.txt |grep -E "peida|com"

peida.cnblogs.com

[root@localhost test]# cat test.txt |grep -E "ed|at"

redhat

Redhat

[root@localhost test]#

說明:

實例13:顯示當前目錄下面以.txt 結尾的文件中的所有包含每個字元串至少有7個連續小寫字元的字元串的行

命令:

grep '[a-z]\{7\}' *.txt

輸出:

[root@localhost test]# grep '[a-z]\{7\}' *.txt

test.txt:hnlinux

test.txt:peida.cnblogs.com

test.txt:linuxmint

[root@localhost test]#

實例14:日誌文件過大,不好查看,我們要從中查看自己想要的內容,或者得到同一類數據,比如說沒有404日誌信息的

命令:

grep '.' access1.log|grep -Ev '404' > access2.log

grep '.' access1.log|grep -Ev '(404|/photo/|/css/)' > access2.log

grep '.' access1.log|grep -E '404' > access2.log

輸出:

[root@localhost test]# grep 「.」access1.log|grep -Ev 「404」 > access2.log

說明:上面3句命令前面兩句是在當前目錄下對access1.log文件進行查找,找到那些不包含404的行,把它們放到access2.log中,後面去掉』v』,即是把有404的行放入access2.log

Ⅶ Linux Shell cat的輸出能作為grep的匹配字元串么

1.
如果是2個文件對比
可以參考用
diff
命令。
2.
如果是想用1.txt文件裡面的每一行單獨拿出來

2.txt文件對比看看是否有相同可以考慮用腳本實現:
#!/bin/bash
while
read
ido
grep
"$i"
2.txt
done
<"1.txt"

Ⅷ Linux cat 並 grep 字元賦值函數

引號用錯了,應該用反引號,就是鍵盤1左邊的鍵
txt=`cat aik.config.php|grep "zhanwai"`

Ⅸ linux常用命令有哪些

linux 常用命令有:

  • pwd 命令

  • 使用 pwd 命令找出您所在的當前工作目錄(文件夾)的路徑。該命令將返回一個絕對(完整)路徑,該路徑基本上是所有以 / 開頭的目錄的路徑。絕對路徑的一個示例是 /home/username。

  • cd 命令

  • 要瀏覽 Linux 文件和目錄,請使用 cd 命令。根據您所在的當前工作目錄,它需要目錄的完整路徑或名稱。假設您位於 /home/username / Documents 中,並且想要轉到 Documents 的子目錄 Photos。為此,只需鍵入以下命令:cd Photos。另一種情況是,如果您想切換到一個全新的目錄,例如 /home/username / Movies。在這種情況下,您必須輸入 cd,然後輸入目錄的絕對路徑:cd /home/username / Movies。有一些快捷方式可幫助您快速導航:cd ..(帶有兩個點)將一個目錄向上移動 cd 直接轉到主文件夾 cd-(帶連字元)移動到上一個目錄附帶說明一下,Linux 的 shell 是區分大小寫的。因此,您必須准確輸入名稱的目錄。

  • ls 命令

  • LS 命令用於查看目錄的內容。默認情況下,此命令將顯示當前工作目錄的內容。如果要查看其他目錄的內容,請鍵入 ls,然後鍵入目錄的路徑。例如,輸入 LS / 家 / 用戶名 / 文檔查看的內容的文件。您可以使用 ls 命令使用以下變體:ls -R 還將列出子目錄中的所有文件 ls -a 將顯示隱藏的文件 ls -al 將列出文件和目錄以及詳細信息,例如許可權,大小,所有者等。

  • cat 命令

  • cat(連接的縮寫)是 Linux 中最常用的命令之一。它用於在標准輸出(sdout)上列出文件的內容。要運行此命令,請鍵入 cat,然後輸入文件名及其擴展名。例如:cat file.txt。以下是使用 cat 命令的其他方法:cat> filename 創建一個新文件 cat filename1 filename2> filename3 連接兩個文件(1 和 2),並將它們的輸出存儲在新文件中(3)將文件轉換為大寫或小寫使用,cat filename | tr a-z A-Z >output.txt

  • cp 命令

  • 使用 cp 命令將文件從當前目錄復制到另一個目錄。例如,命令 cp scenery.jpg/home /username/ Pictures 將在您的 Pictures 目錄中創建一個 Scene.jpg 副本(來自當前目錄)。

  • mv 命令

  • mv 命令的主要用途是移動文件,盡管它也可以用於重命名文件。mv 中的參數類似於 cp 命令。您需要輸入 mv,文件名和目標目錄。例如:mv file.txt/home /username/ Documents。

  • mkdir 命令

  • 使用 mkdir 命令創建一個新目錄 - 如果鍵入 mkdir Music,它將創建一個名為 Music 的目錄。還有一些額外的 mkdir 命令:要在另一個目錄中生成新目錄,請使用此 Linux 基本命令 mkdir Music / Newfile 使用 p(父級)選項在兩個現有目錄之間創建一個目錄。例如,mkdir -p Music / 2022 / Newfile 將創建新的 「2022」 文件。

  • rmdir 命令

  • 如果需要刪除目錄,請使用 rmdir 命令。但是,rmdir 僅允許您刪除空目錄。

  • rm 命令

  • 該 RM 命令用於刪除目錄以及其中的內容。如果只想刪除目錄(作為 rmdir 的替代方法),請使用 rm -r。注意:使用此命令時要格外小心,並仔細檢查您所在的目錄。這將刪除所有內容,並且沒有撤消操作。

  • touch 命令

  • 該觸摸命令允許您創建通過 Linux 命令行新的空白文件。例如,輸入 touch /home/username/Documents/Web.html 在 Documents 目錄下創建一個名為 Web 的 HTML 文件。

  • locate 命令

  • 您可以使用此命令來定位文件,就像 Windows 中的搜索命令一樣。此外,將 - i 參數與該命令一起使用將使其不區分大小寫,因此即使您不記得其確切名稱,也可以搜索文件。要搜索包含兩個或多個單詞的文件,請使用星號(*)。例如,locate -i school * note 命令將搜索包含單詞 「school」 和 「 note」 的任何文件,無論它是大寫還是小寫。

  • find 命令

  • 在類似定位命令,使用 查找也搜索文件和目錄。區別在於,您可以使用 find 命令在給定目錄中查找文件。例如,find /home/-name notes.txt 命令將在主目錄及其子目錄中搜索名為 notes.txt 的文件。使用查找時的其他變化 是:要查找當前目錄中使用的文件,請使用 find . -name notes.txt 要查找目錄,請使用 /-type d -name notes. txt13. grep 命令無疑對日常使用很有幫助的另一個基本 Linux 命令是 grep。它使您可以搜索給定文件中的所有文本。為了說明這一點,grep blue notepad.txt 將在記事本文件中搜索單詞 blue。包含搜索到的單詞的行將被完整顯示。

  • sudo 命令

  • 該命令是 「SuperUser Do」 的縮寫,使您能夠執行需要管理或超級用戶許可權的任務。但是,建議不要將此命令用於日常使用,因為如果您做錯了一些事情,很容易發生錯誤。

  • df 命令

  • 使用 df 命令可獲取有關系統磁碟空間使用情況的報告,以百分比和 KB 表示。如果要以兆位元組為單位查看報告,請輸入 df -m。

  • 命令

  • 如果要檢查文件或目錄佔用了多少空間,答案是 (磁碟使用情況)命令。但是,磁碟使用情況摘要將顯示磁碟塊號,而不是通常的大小格式。如果要以位元組,千位元組和兆位元組為單位查看它,請在命令行中添加 - h 參數。

  • head 命令

  • 所述頭命令用於查看任何文本文件的第一行。默認情況下,它將顯示前十行,但是您可以根據自己的喜好更改此數字。例如,如果只想顯示前五行,則鍵入 head -n 5 filename.ext。

  • tail 命令

  • 該命令與 head 命令具有相似的功能,但是 tail 命令將顯示文本文件的最後十行,而不是顯示第一行。例如,tail -n filename.ext。

  • diff 命令

  • diff 命令是差異的縮寫,diff 命令逐行比較兩個文件的內容。分析文件後,它將輸出不匹配的行。程序員在需要進行程序更改時經常使用此命令,而不是重寫整個源代碼。此命令最簡單的形式是 diff file1.ext file2.ext

  • tar 命令

  • 該 tar 命令是最常用的命令歸檔多個文件到一個壓縮包。類似於 zip 格式常見的 Linux 文件格式,壓縮是可選的。該命令具有很長的功能列表,非常復雜,例如將新文件添加到現有檔案中,列出檔案內容,從檔案中提取內容等等。查看一些實際示例,以了解有關其他功能的更多信息。

  • chmod 命令

  • chmod 是另一個 Linux 命令,用於更改文件和目錄的讀取,寫入和執行許可權。由於此命令相當復雜,因此您可以閱讀完整的教程以正確執行它。

  • chown 命令

  • 在 Linux 中,所有文件均歸特定用戶所有。該 CHOWN 命令使您可以更改或文件的所有權轉讓給指定的用戶名。例如,chown linuxuser2 file.ext 將使 linuxuser2 成為 file.ext 的所有者。

  • Jobs 命令

  • jobs 命令將顯示所有當前作業及其狀態。作業基本上是由 Shell 啟動的進程。

  • kill 命令

  • 如果您的程序無響應,則可以使用 kill 命令手動終止它。它將向運行異常的應用發送特定信號,並指示該應用自行終止。您總共可以使用 64 個信號,但是人們通常只使用兩個信號:SIGTERM(15) — 請求程序停止運行,並給它一些時間來保存其所有進度。如果在輸入 kill 命令時未指定信號,則將使用此信號。SIGKILL(9) - 強製程序立即停止。未保存的進度將丟失。除了知道信號之外,您還需要知道要殺死的程序的進程標識號(PID)。如果您不知道 PID,只需運行命令 ps ux。在知道您要使用什麼信號以及程序的 PID 之後,輸入以下語法:kill [signal option] PID.

  • ping 命令

  • 使用 ping 命令檢查與伺服器的連接狀態。例如,只需輸入 ping google.com,該命令將檢查您是否能夠連接到 Google 並測量響應時間。

  • wget 命令

  • Linux 命令行非常有用 - 您甚至可以在 wget 命令的幫助下從 Internet 下載文件。為此,只需鍵入 wget,然後輸入下載鏈接即可。

  • uname 命令

  • 該 UNAME 命令,短期對於 Unix 名,將列印您的 Linux 系統,如計算機名稱的詳細信息,操作系統,內核,等等。

  • top 命令

  • 作為與 Windows 中的任務管理器等效的終端,top 命令將顯示正在運行的進程的列表以及每個進程使用的 CPU 數量。監視系統資源使用情況非常有用,尤其是知道哪個進程由於消耗太多資源而需要終止時。

  • history 命令

  • 當您使用 Linux 一段時間後,您會很快注意到每天可以運行數百個命令。因此,如果您想查看之前輸入的命令,運行歷史記錄命令特別有用。

  • man 命令

  • 對某些 Linux 命令的功能感到困惑嗎?不用擔心,您可以使用 man 命令從 Linux 的外殼程序中輕松地學習如何使用它們。例如,輸入 man tail 將顯示 tail 命令的手動指令。

  • echo 命令

  • 此命令用於將一些數據移到文件中。例如,如果要將文本 「Hello,我的名字叫 John」 添加到名為 name.txt 的文件中,則可以鍵入 echo Hello, my name is John >> name.txt

  • zip,unzip 命令

  • 使用 zip 命令將文件壓縮到 zip 歸檔文件中,然後使用 unzip 命令從 zip 歸檔文件中提取壓縮文件。

  • hostname 命令

  • 如果您想知道主機 / 網路的名稱,只需鍵入 hostname。在末尾添加 - I 將顯示您的網路的 IP 地址。

  • useradd,userdel 命令

Ⅹ linux 中怎麼以cat一個文件的每行作為變數grep另一個文件

for line in `cat 1.txt`;do grep $line 2.txt; done

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:377
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:611
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:31
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:942
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371