grep 命令
作用: 从文本文件或管道数据流中筛选匹配的行及数据, 配合正则表达式一起使用, 功能更加强大.
格式:
grep [options] [pattern] [file]
1, 匹配包含 "ghostwu" 的行
- ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt
- 1 my name is ghostwu
2 how are you
3 fine think you
4 My name is Ghostwu
5 what's your name?
- 6 my name is ghostwu2
- 7
- ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt
- my name is ghostwu
- my name is ghostwu2
2,-v: 不包含, 相当于取反
- ghostwu@dev:~/linux/grep$ grep -v "ghostwu" ghostwu.txt
- how are you
- fine think you
- My name is Ghostwu
what's your name?
ghostwu@dev:~/linux/grep$
3,-n 添加行号
- ghostwu@dev:~/linux/grep$ grep -n "ghostwu" ghostwu.txt
- 1:my name is ghostwu
- 6:my name is ghostwu2
- ghostwu@dev:~/linux/grep$ grep -vn "ghostwu" ghostwu.txt
- 2:how are you
- 3:fine think you
- 4:My name is Ghostwu
5:what's your name?
7:
4,-E, 使用扩展的 egrep 命令, 模式中可以用正则表达式
- ghostwu@dev:~/linux/grep$ cat ghostwu.txt
- my name is ghostwu
- how are you
- fine think you
- My name is Ghostwu
what's your name?
- my name is ghostwu2
- ghostwu@dev:~/linux/grep$ grep -E "my|your" ghostwu.txt
- my name is ghostwu
what's your name?
- my name is ghostwu2
- ghostwu@dev:~/linux/grep$ grep -Ev "my|your" ghostwu.txt
- how are you
- fine think you
- My name is Ghostwu
- ghostwu@dev:~/linux/grep$ grep -En "my|your" ghostwu.txt
- 1:my name is ghostwu
5:what's your name?
6:my name is ghostwu2
5,-i 选项, 不区分大小写
- ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt
- my name is ghostwu
- my name is ghostwu2
- ghostwu@dev:~/linux/grep$ grep -i "ghostwu" ghostwu.txt
- my name is ghostwu
- My name is Ghostwu
- my name is ghostwu2
6,-c : 统计匹配的行数, 不是匹配字符串的次数
- ghostwu@dev:~/linux/grep$ grep -c "ghostwu" ghostwu.txt
- 2
- ghostwu@dev:~/linux/grep$ grep -ci "ghostwu" ghostwu.txt
- 3
- ghostwu@dev:~/linux/grep$ grep -c "ghostwu" ghostwu.txt
- 2
- ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt
my name is ghostwu, nice to meet you,ghostwu
- my name is ghostwu2
- ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt
1 my name is ghostwu, nice to meet you,ghostwu
2 how are you
3 fine think you
4 My name is Ghostwu
5 what's your name?
- my name is ghostwu2
7,-o: 只输出匹配到的字符串
- ghostwu@dev:~/linux/grep$ grep -o "ghostwu" ghostwu.txt
- ghostwu
- ghostwu
- ghostwu@dev:~/linux/grep$ grep -oi "ghostwu" ghostwu.txt
- ghostwu
- Ghostwu
- ghostwu
8,-w: 只匹配过滤的单词, 类似于精确匹配
ghostwu@dev:~/linux/grep$ grep -w "ghostwu" ghostwu.txt
my name is ghostwu, nice to meet you,ghostwu
ghostwu@dev:~/linux/grep$ grep -wi "ghostwu" ghostwu.txt
my name is ghostwu, nice to meet you,ghostwu
- My name is Ghostwu
- ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt
1 my name is ghostwu, nice to meet you,ghostwu
2 how are you
3 fine think you
4 My name is Ghostwu
5 what's your name?
- my name is ghostwu2
9, 常用的一招小技巧, 去除文件的注释和空行, 在运维中, 可以用这条命令把配置文件的空行和注释去掉, 然后用管道生成. 这样配置文件比较容易查看和配置
- ghostwu@dev:~/linux/grep$ grep -Ev "^$|#" ghostwu.php
- <?php
- class Person {
- public $name = 'ghostwu';
- public $age = 20;
- public function showinfo(){
- echo $this->name . PHP_EOL;
- echo $this->age. PHP_EOL;
- }
- }
- ghostwu@dev:~/linux/grep$ cat -n ghostwu.php
- 1 <?php
- 2
- 3 class Person {
- 4
- 5 #人名
- 6 public $name = 'ghostwu';
- 7
- 8 #年龄
- 9 public $age = 20;
- 10
- 11 #显示信息
- 12 public function showinfo(){
- 13 echo $this->name . PHP_EOL;
- 14 echo $this->age. PHP_EOL;
- 15 }
- 16 }
来源: http://www.bubuko.com/infodetail-2610337.html