Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

使用cut sed grep awk sort 对文本内容操作

来源: [标签:出处] 分享至:

    对linux而言一切皆文件,linux 通过文本文件保存各种信息,包括硬件、配置文件等,对文件的操作是必不可少的,在处理文本的过程中我们可能需要从中查找内容,对文件内容进行排序,对文件进行处理按照自己的方式输入内容。

    对于从文件中查找内容我们可以使用sedgrepsort命令,首先介绍sed,我们使用sed可以方便的文件中找出按照我们写的正则表达式输出结果,命令

sed  [options] ‘/content/command’ filename  ,如果command是p它默认输出的内容是在查找的内容后再显示一边,这对于一个有很多内容的文件来说不容易观察,我们只想要我们查找的内容显示出来,使用-n 选项可以达到目的;当我们想要把文件中的某些内容替换的时候,可使用s命令,格式为sed 's/查找的内容/替换的内容/gp' filename,g命令是能够在全局范围内修改,如果不加,你只能修改每一行第一次查找到的内容,一定要记得p,如果不加不会输出任何内容,同样为了观察方便,加-n选项只显示我们查找的内容;如果想直接对源文件进行修改,使用-i 选项直接修改了原文件,在使用-i 的时候一定要确保命令的正确;如果修改一个文件中的不同内容时使用-e选项,一次执行多个命令,格式sed -e 's/^root/lll/gp' -e 's/^test/kkk/gp' /etc/passwd ;使用d命令可以删除查找的内容,当与-i 一起使用时更要注意;sed 还执行sed脚本,形式如sed -f file1 fiel2(file1 存放脚本的地方,file2 操作的文件),需要说明的是file1中的内容,不要用‘’或“”,直接写要做的操作,例如s/^root/kkk/gp ,只要这样就可以,sed 的其他的命令有i\和a\,分别是在查找的内容前、后插入内容。

     与sed 有着相似功能的grep,grep 可以查找到满足条件的一行或多行,与sed不同的是grep不会显示出文件中的其他内容,格式如 grep  [options] ‘条件’filename ,主要的选项有-i (不区分大小写)、-v (与条件正好相反)、-n (在结果的每行添加行号,grep 比较常用,但是条件基本上都是匹配正则表达式,所以对grep和sed,awk,sort的对文件操作的命令都是最重要的,如果查找/etc/passwd 中root用户的信息,这样写 grep  '^root' /etc/passwd  ,命令格式很好记,但是正则表达式组成的条件确实最重要的,因此学好正则表达式是必不可少的。对于查找出来的结果没有规律的排列,为了更好的查看结果,我们开始使用sort的排序功能。

    sort 具有非常强大的排序功能,格式 sort [options] filename sort 不用正则表达式,主要是几个选项,-t 选项用于指定分隔符,如-t:则是以:分割字段,一是为了查看,二是通过-k 选项指定按照那一段排序,所以-t和-k 一般都是一起使用的,sort 默认是按照asscll 码排序的,如果要按照字母反向排列,就要使用-r ,没什吗功能,主要是为了查看内容的需求,如果想按照数字排序默认输出的结果可能不是你想要的,9 11 来说吧,默认按照第一个数字的对应asscl码比较,9比1大,所以11 就在前边,因此使用-n 可以解决这个问题;sort 输出结果不会删除相同的行,重复出现影响查看,-u 选项可以只输出没有重复的行,sort -u = uniq 都是这个效果,uniq 命令的选项中 -d 可以输出只重复的行,-c  还可以显示重复的次数,或许有用到的时候。

     还有一些命令可以对文件输出的形式修改和编辑,如cut、awk,先介绍cut,cut命令可以从中提取某一列的内容,同时还可以指定分隔符,格式,cut [options] filename, -d 和-c 选项都是指定分割符,-d :或-t " " ,指定按照:和空格分割字段,而-c 是按照字符分割,对于-d 一般和-f 选项联合使用,如 -d: -f1 ,以:分割,取出第一段,而-c 使用方式是-c 1-n 取出1-n 之内的字符,cut 在去特定字段列的时候非常好用,例如取/etc/passwd 中的用户和其他信息。

     而awk 是一种功能更加强大的文本处理命令,格式如下                                         awk 'BEGIN{----} / 条件 / {print $n } END{----}' filename   ,在BEGIN 里边可以指定输入内容的格式,条件匹配正则表达式,print 输出参数,在END 里还能指定输出内容的格式,在BEGIN和END 中常用的有指定输入和输出的分割字符分别是FS和OFS,格式如   BEGIN{FS=":"} (END{OFS=":"}),指定按照:分割字段,同时还可指定行的分割符,BEGIN和END 分别是RS、ORS式和FS 一样,这种功能加上正则表达式可以对文本中的内容进行精确的匹配和输出;awk 还可以调用函数,这种功能在这不做介绍。


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史