您的位置:首页 > 运维架构 > Linux

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

2017-07-19 19:34 253 查看

本文将通过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命令使用简介
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐