linux文本搜索命令

系统 1606 0

文本的提取和排序

下面介绍几个重要的文本提取工具。
使用grep匹配模式
本章前面简要地 介绍了grep命令,用它进行一个串中某些模式的匹配,采用正规表达式。(关于正规表达式的详细介绍,请参阅 [url]http://www.regular-expressions.info/tutorial.html[/url]处的教程。)词grep是 global regular expression print(全局正规表达式打印)的首字母缩写,它是从下面的vi命令衍生出来的,下面的命令打印与正规表达式re相匹配的所有行。
可将正规表达式 想象为用来定位文件中文本的搜索标准。因此,grep类似于别的操作系统中的搜索命令。grep搜索文件(或多个文件)的每一行,寻找给定串的第一次出 现,如果找到这个串,打印出相应的行。例如,输出文件test.txt中包含表达式oracle database的所有行,可以按如下的方式使用grep命令:
为了输出test.txt文件中不包含表达式oracle database的所有行,可使用带-v选项的grep命令,如下所示:
除-v选项外,grep命令还可以使用如下的几个选项。
q -c:打印每个输入文件匹配行计数。
q -l:打印每个输入文件的名字。
q -n:提供每个输出行的行号。
q -i:忽略表达式中字母的大小写。
除grep外,还可以使用fgrep(固定grep)搜索文件。fgrep命令不使用正规表达式。此命令直接进行串比较,查找某个固定串而不是一个正规表达式的匹配。
grep的egrep版本帮助处理复杂的正规表达式,比正规的grep命令快。
剪切、粘贴和联结文本
通常,需要剪切一个文件文本的某部分,或者联结来自不止一个文件的文本。UNIX提供了执行这些任务的命令,以下各节对它们进行介绍。
1.用cut命令输出列
cut命令输出一个文本文件的指定的列。假如有一个名为example.txt的文件,它具有如下的文本:
可用-f选项指定要提取的字段。下面的命令将返回example.txt文件中的第二列:
使用带-c选项的cut命令来指定希望从一个文件中提取的特定字符。下面的两个命令分别提取password.txt文件中的第10个字符以及第10-12个字符:
可与-f选项一 起使用-d选项提取直到一个特定定界符的所有字符。下面的例子说明,cut命令提取passwd文件的第一个字段(f1),用-d选项指出该字段是由冒号 (:)定界的。(passwd文件位于/etc目录,此目录保存UNIX和Linux系统用户账号信息。)
2.用paste命令联结文件
paste命令从一个源取一行并把它与来自另一源的另一行组合起来。假如有两个文件:test1.txt包含字符串one two three,test2.txt包含one four five six。可如下用paste命令将两个文件结合:
3.用join命令联结文件
join命令也结合两个文件的内容,但它只在两个文件有一个共同字段时进行结合。前一节中,test1.txt和test2.txt不具有共同的列,因此对这两个文件使用join命令不起作用。但如果有两个文件test.one和test.two,它们的内容如下:
默认情况下,join命令只匹配第一个字段,所以它将根据共同的(第一列)给出如下的结果:
-1选项允许指出使用哪个字段作为第一个文件中的匹配字段。-2选项允许指定使用哪个字段作为第二个文件中的匹配字段。例如,如果第一个文件的第二个字段匹配第二个文件的第三个字段,可使用如下的join命令:
可使用-o选项以后面的格式指定输出字段:file.filed。因此,要打印匹配行的第一个文件的第二个字段和第二个文件的第三个字段,可使用如下带选项的join命令:
4.用sort命令排序文本
可用sort命令对文本文件的行进行排序,不管这些行是来自于管道或来自于文件。如果使用-m选项,sort只合并文件而不排序。假如有一个名为test.txt的文件,其内容如下:
可用sort命令将test.txt文件的内容按字母顺序输出:
默认时,sort在文本的第一列上进行排序。
5.用uniq命令删除重复的行
uniq命令删除文件的重复行。在一个管道中,此命令通常后跟一个sort命令。使用-c选项,可将其用来对某行进行计数,或者使用-d选项,可用来只报告重复的行。
上面的例子中,sort命令使用-m选项合并两个文件,test.one和test.two。输出管道到带-c选项的uniq命令。所得出的是一个按字母顺序排列的表,所有重复行被删除。而且还给出每行重复的频率。

linux文本搜索命令


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论