Linux操作系统 文本过滤 1
1 Linux 操作系统 文本过滤
主要内容和学习要求 口能够熟练运用grep命令 口掌握sed流编辑器 口学会使用awk编程 2
2 主要内容和学习要求 能够熟练运用 grep 命令 掌握 sed 流编辑器 学会使用 awk 编程
grep家族 口grep是Linux下使用最广泛的命令之一,其作用 是在一个或多个文件中查找某个字符模式所在的行,并 将结果输出到屏幕上。 grep命令不会对输入文件进行任何修改或影响 口grep家族由grep、egrep和fgrep组成: ◆grep:标准grep命令,主要讨论此命令。 ◆egrep:扩展grep,支持基本及扩展的正则表达式。 ◆fgrep:固定grep(fixed grep),也称快速grep (fast grep),按字面解释所有的字符,即正则表达式中 的元字符不会被特殊处理。这里的“快速”并不是指速度快
3 grep 是 Linux 下使用最广泛的命令之一,其作用 是在一个或多个文件中查找某个字符模式所在的行,并 将结果输出到屏幕上。 grep 命令不会对输入文件进行任何修改或影响 grep 家族 grep 家族由 grep、egrep 和 fgrep 组成: grep: 标准 grep 命令,主要讨论此命令。 egrep: 扩展 grep,支持基本及扩展的正则表达式。 fgrep: 固定 grep (fixed grep),也称快速 grep ( fast grep ),按字面解释所有的字符,即正则表达式中 的元字符不会被特殊处理。这里的“快速”并不是指速度快
grep的使用 grep命令的一般形式 grep[选项]pattern filel file2 ● pattern: 可以是正则表达式(用单引号括起来)、 或字符串(加双引号)、或一个单词。 ●fi1e1fi1e2..:文件名列表,作为grep命令 的输入;greP的输入也可以来自标准输入或管道; 口可以把匹配模式写入到一个文件中,每行写一个,然 后使用-£选项,将该匹配模式传递给grep命令 grep -f patternfile filel file2 4
4 grep 命令的一般形式 grep [选项] pattern file1 file2 ... grep -f patternfile file1 file2 ... grep 的使用 z pattern:可以是正则表达式(用单引号括起来)、 或字符串(加双引号)、或一个单词。 z file1 file2 ... :文件名列表,作为 grep 命令 的输入;grep 的输入也可以来自标准输入或管道; 可以把匹配模式写入到一个文件中,每行写一个,然 后使用 -f 选项,将该匹配模式传递给 grep 命令
grep 1 常用选项 -c 只输出匹配的行的总数 -i 不区分大小写 -h 查询多个文件时,不显示文件名 -1 查询多个文件时,只输出包含匹配模式的文件的文件 名 -n 显示匹配的行及行号 -v 反向查找,即只显示不包含匹配模式的行 -s 不显示错误信息 grep -i an*'datafile
5 -s 不显示错误信息 -v 反向查找,即只显示不包含匹配模式的行 -i 不区分大小写 -h 查询多个文件时,不显示文件名 查询多个文件时,只输出包含匹配模式的文件的文件 名 -l -n 显示匹配的行及行号 -c 只输出匹配的行的总数 grep –i 'an*' datafile grep 常用选项
grep命令应用举例 查询多个文件,可以使用通配符“*” grep "math2"*.txt grep "12"* ◆反向匹配 ps aux I grep "ssh" grep -v "grep" ◆ 匹配空行 grep -n datafile grep -v datafile datafile2
6 grep 命令应用举例 查询多个文件,可以使用通配符 “ * ” grep "math2" *.txt grep "12" * 反向匹配 ps aux | grep "ssh" | grep –v "grep" 匹配空行 grep -n '^$' datafile grep -v '^$' datafile > datafile2
grep命令应用举例 ◆精确匹配单词:1 ●找出所有包含以north开头的单词的行 grep '\datafile ●找出所有包含north单词的行 grep \datafile
7 精确匹配单词: \ grep 'west\>' datafile grep '\' datafile grep 命令应用举例 z 找出所有包含 以 north 开头 的单词的行 z 找出所有包含 以 west 结尾 的单词的行 z 找出所有包含 north 单词的行
grep命令应用举例 ◆递归搜索目录中的所有文件:-x grep -r "north"datafile ~/Teaching/linux/ ◆关于某个字符连续出现次数的匹配 grep 'o\2,\}'helloworld 'o\{2,4\}',o\{2,4\',1o\{2,4\} 8
8 递归搜索目录中的所有文件:-r grep -r "north" datafile ~/Teaching/linux/ 关于某个字符连续出现次数的匹配 grep 'o\{2,\}' helloworld 'o\{2,4\}' , 'o\{2,4\}' , 'lo\{2,4\}' grep 命令应用举例
grep命令应用举例 ◆其它 grep n'datafile grep 'ys datafile grep 'r\.'datafile grep [we]'datafile grep -i'ss*'datafile grep -n [a-z]\{9\}'datafile grep -c '\datafile
9 其它 grep '^n' datafile grep 'y$' datafile grep 'r\.' datafile grep '^[we]' datafile grep –i 'ss*' datafile grep –n '[a-z]\{9\}' datafile grep –c '\' datafile grep 命令应用举例
grep与管道 1s -1 I grep d' 如果传递给grep的文件名参数中有目录的话, 需使用“-d”选项 grep -d [ACTION]directory name 其中ACTION可以是 read:把目录文件当作普通文件来读取 skip:目录将被忽略而跳过 recurse:递归的方式读取目录下的每一个文件,可以用 选项"-r"代替"-d recurse" grep -rl "etho"/etc 10
10 ls –l | grep '^d' 如果传递给 grep 的文件名参数中有目录的话, 需使用 “ -d ” 选项 grep -d [ACTION] directory_name 其中 ACTION 可以是 read:把目录文件当作普通文件来读取 skip:目录将被忽略而跳过 recurse:递归的方式读取目录下的每一个文件,可以用 选项 "-r" 代替 "-d recurse" grep -rl "eth0" /etc grep 与管道