linux文本內(nèi)容操作系列g(shù)rep命令詳解
linux文本內(nèi)容操作系列g(shù)rep命令詳解
Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來(lái)。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。接下來(lái)是小編為大家收集的linux文本內(nèi)容操作系列g(shù)rep命令詳解,歡迎大家閱讀:
linux文本內(nèi)容操作系列g(shù)rep命令詳解
grep
這算是文本內(nèi)容的一個(gè)重量級(jí)選手,能根據(jù)某些規(guī)格在上千行的文本文件中查找所需要的數(shù)據(jù)。他能接受正則表達(dá)式和通配符。
礎(chǔ)實(shí)例:
1. 命令翻譯包含給定match_pattern的文本行,如我在grep.txt中查找PATTERN
grep PATTERN grep.txt
or grep "PATTERN" grep.txt
2. 匹配多個(gè)文件
grep PATTERN grep.txt grep1.txt
3. 從stdin中讀取
echo –e "this is a word\nnext line" | grep word
打?。簍his is a word
4. grep 與 正則表達(dá)式
grep –E "[a-z]+"
或者
egrep "[a-z]+"
5. 只輸出匹配部分,而不是匹配的當(dāng)前行
echo this is line. | greip –o –E "[a-z]+\."
輸出:line
6. 打印除包含match_pattern的行之外的所有行,可使用
grep -v match_pattern file
7. 統(tǒng)計(jì)文本或者文件中包含匹配字符串的字?jǐn)?shù)(這個(gè)面試經(jīng)常會(huì)問(wèn)到)
$grep -c "text" filename
但他給出的是匹配行的次數(shù),而不是匹配的次數(shù)
統(tǒng)計(jì)匹配數(shù)量的話,可以用到下面的技巧
$echo –e "1 2 3 4\nhello\n5 6"| egrep -o "[0-9]" | wc –l
打印1到6 | 從stdin中讀取數(shù)字,分行打印 | 統(tǒng)計(jì)行數(shù)
8. 打印行號(hào)
grep "text" -n filename
9. 搜2個(gè)文件,以及他們的行號(hào),輸出會(huì)打印文件名
grep "text"–n s1.txt s2.txt
10.如果你只想知道哪些文件有 單詞PATTERN
grep –l PATTER s1.txt s2.txt
-L則返回的不匹配文件列表
11.可以再整個(gè)目錄下查找 單詞PATTERN 在那些文件里
grep PATTERN . -R -n
12 同時(shí)多個(gè)匹配查找
echo this is a line of text | grep -e "this" -e "line" -o
打印:
this
line
13 只在某些合適的文件中搜索
grep "main()" .-r --include *.{c,cpp}
只在.c 和.cpp結(jié)尾的文件中搜索 main()
14 進(jìn)行搜索排除某些文件
grep "main()" . -r --exclude "README"
排除了所有文件名為"README"的文件
15 打印匹配之前或之后的3行
seq 10 | grep 5 –A 3 之前
seq 10 | grep 6 –B 3 之后
16 打印匹配前后3行,同時(shí)輸出
seq 10 | grep 5 –C 3
我們來(lái)看下--help
復(fù)制代碼代碼如下:
看了“linux文本內(nèi)容操作系列g(shù)rep命令詳解”還想看: