Linux文本处理三剑客之 grep

grep 命令的作用是从文本文件或管道中筛选匹配的行及数据。

主要语法格式如下:

grep [OPTIONS] [PATTERN] [FILE]

其中 OPTIONS 表示命令参数;PATTERN 表示匹配模式,即要找匹配的实际文本,可以使文字符号,也可以是正则表达式; FILE 则表示要筛选或过滤的目标文件。

为了测试,我们先创建名为 test.txt 的文本,内容如下:

hello
world

# nice to meet you!

what's your name?

test
I'm xsir

其中命令参数主要有以下几种:

  1. - v

该命令表示反选,即排除掉匹配的行,显示不匹配的行。

命令

grep -v  

示例

# 筛选出不包含 you 字符串的行
>>grep -v "you" test.txt
hello
world



test
I'm xsir
  1. -n

该命令表示显示匹配到的行及行号。

命令

grep -n  

示例

# 筛选出包含有字符串 you 的行并且显示行号
>> grep -n 'you' test.txt
4:# nice to meet you!
6:what's your name?
  1. -c

该命令表示统计匹配到的行数(不是次数)。

命令

grep -c  

示例

# 显示匹配到字符串 you 的行数
>> grep -c "you" test.txt
2
  1. -E

该命令表示使用正则表达式进行匹配 ,也可以使用 egrep 命令代替。

命令

grep -E  
# 或
egrep  

示例

# 筛选出包含字符串 you 或 xsir 的行 也可使用 `egrep "you|xsir" test.txt`
>> grep -E "you|xsir" test.txt
# nice to meet you!
what's your name?
I'm xsir
  1. -w

该命令表示只匹配过滤的单词。

命令

grep -w  

示例

# 筛选出包含单词 you 的行
>> grep -w "you" test.txt
# nice to meet you!
  1. -o

该命令表示只输出匹配的内容。

命令

grep -o  

示例

# 此处为了显示更加明晰,将 `-n` 和 `-o` 联合使用,筛选并输出匹配到字符串 you 的行
>> grep -on "you" test.txt 
4:you
6:you

巧用上面的命令能够大大提高我们的工作效率,比如上面的文本中包含了很多空格及注释行,在实际预览的时候我们可能想要过滤掉这些内容,使用以下方式即可:

# 过滤掉空行及注释行
>> grep -Ev "^$|#" test.txt
hello
world
what's your name?
test
I'm xsir

你可能感兴趣的:(Linux文本处理三剑客之 grep)