Linux 查找文件中匹配指定模式的行

来源:互联网 发布:js高级函数 编辑:程序博客网 时间:2024/06/07 18:58

本文将通过grep命令和sed流编辑器两种方法完成要求

如果不了解sed流编辑器可以参考 linux sed流编辑器示例讲解

以文件/usr/share/mime/packages/freedesktop.org.xml 为例

root@ubuntu:~# wc -l /usr/share/mime/packages/freedesktop.org.xml    37453 /usr/share/mime/packages/freedesktop.org.xml#首先我们统计一下文件的行数

1. grep命令的实现

这里写图片描述

解析

root@ubuntu:~# grep ich /usr/share/mime/packages/freedesktop.org.xml >/root/lines    #过滤包含关键字符串 ich 的行并保存到 /root/lines    root@ubuntu:~# wc -l /root/lines     341 /root/lines    #统计过滤得到的文件的内容行数    #接下来查看过滤得到文件的前六行的内容    root@ubuntu:~# head -n 6 /root/lines         <comment xml:lang="ast">ficheru Macintosh codificáu con BinHex</comment>        <comment xml:lang="fr">fichier codé Macintosh BinHex</comment>        <comment xml:lang="gl">ficheiro de Macintosh codificado con BinHex</comment>        <comment xml:lang="oc">fichièr encodat Macintosh BinHex</comment>        <comment xml:lang="pt">ficheiro codificado em BinHex de Macintosh</comment>        <comment xml:lang="ast">ficheru de buzón de corréu</comment>    #接下来查看源文件的前六行的内容,直观对比一下可以看出内容完全不一样,初步得出结论过滤成功    root@ubuntu:~# head -n 6 /usr/share/mime/packages/freedesktop.org.xml    <?xml version="1.0" encoding="UTF-8"?>    <!DOCTYPE mime-info [      <!ELEMENT mime-info (mime-type)+>      <!ATTLIST mime-info xmlns CDATA #FIXED "http://www.freedesktop.org/standards/shared-mime-info">      <!ELEMENT mime-type (comment+, (acronym,expanded-acronym)? , (generic-icon? | glob | magic | treemagic | root-XML | alias | sub-class-of)*)>    root@ubuntu:~# 

2. sed流编辑器的过滤实现

这里写图片描述

解析

#使用sed流编辑器过滤包含关键字符串 ich 的行并保存到当前目录下的sed.txt    root@ubuntu:~# sed -n '/ich/w sed.txt' /usr/share/mime/packages/freedesktop.org.xml    ##统计过滤得到的文件的内容行数    root@ubuntu:~# wc -l sed.txt     341 sed.txt    #接下来查看过滤得到文件的前六行的内容    root@ubuntu:~# head -n 6 sed.txt         <comment xml:lang="ast">ficheru Macintosh codificáu con BinHex</comment>        <comment xml:lang="fr">fichier codé Macintosh BinHex</comment>        <comment xml:lang="gl">ficheiro de Macintosh codificado con BinHex</comment>        <comment xml:lang="oc">fichièr encodat Macintosh BinHex</comment>        <comment xml:lang="pt">ficheiro codificado em BinHex de Macintosh</comment>        <comment xml:lang="ast">ficheru de buzón de corréu</comment>    #最后利用文件比对工具diff来进行文件的一致性比对,结果为除了我们往文件最后添加的不同工具的处理结果的标志外其他内容完全相同    root@ubuntu:~# diff /root/lines sed.txt     342c342    < result by grep command    ---    > result by sed    root@ubuntu:~# 

拓展学习
linux sed流编辑器示例讲解
Linux diff命令使用简介

阅读全文
1 0