码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理工具-1

时间:2016-08-05 21:43:40      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:文本处理工具

1、cat、tac、rev命令-文件查看

1)、cat命令

    cat [OPTION]... [FILE]...

    命令中的...表示可用多个选项查看多个文件
    -E:显示行结束符$
    -n:对显示出的每一行进行编号
    -A:显示所有控制,包括空格、tab、换行等多种控制符
    -b:只对非空行编号
    -s:压缩连续的空行成一行

此外文件合并也可以使用cat命令实现,例如#cat fi ffi > fffi,意思是把fi和ffi文件合并进入fffi文件,其中fffi文件中文件内容是按ffi文件内容接着fi文件内容列示的

2)、tac命令(此命令的作用是使文本内容反过来显示,例如第一行列为最后一行,第二行列为倒数第二行,等等,依次反过来显示)

3)、rev命令(此命令的作用是使文本内容每行倒过来显示,就是每一行的最后一个字符在第一个位置显示,倒数第二个字符在第二个位置显示,等等,依次倒过来显示

2、more和less命令-分页查看文本内容

1)、more:分页查看文件
    more [OPTIONS...] FILE... 

    空格键翻页显示,但是不能往回翻页

    -d:显示翻页及退出提示,例如显示“press space to continue,q to quit”提示信息

2)、less:一页一页地查看文件或STDIN输出
    查看时有用的命令包括:
    /文本搜索 文本 ,从当前位置往下搜索

    ?文本搜索 文本,从当前位置往上搜索

    n/N跳到下一个 or 上一个匹配
less命令是man命令使用的分页符

3、head、tail命令-显示文本前或后行内容

1)、head命令显示文本前行内容
    head [OPTION]... [FILE]...
    -c #:指定获取前#字节
    -n #:指定获取前#行
    -#:指定前几行数
2)、tail命令显示文本后行内容
    tail [OPTION]... [FILE]...
    -c #:指定获取后#字节
    -n #:指定获取后#行
    -#:指定后几行数
    -f:跟踪显示文件新追加的内容, 常用日志监控

         例如在一个端口执行#tail -n 0 -f file,则在另一个端口执行#echo "string" >> file时会在前一个端口实时显示输入的文本内容;或者加上&号实现后台实时显示,例如#tail -n 0 -f file &可实现在另一个端口执行#echo "string" >> file时会在前一个端口实时显示输入的文本内容,而且前一个端口仍可以进行其它操作

4、按列抽取文本cut和合并文件paste

1)、cut命令

    cut [OPTION]... [FILE]...
    -d:指明分隔符(所谓分隔符是文本中的标志性的可作为文本内容分段的符号,可以是字母、空格、标点符号等,默认tab)例如#cut -d:-f2 file,其中的:符号就是指明的分隔符,2是第二个字段
    -f#:所谓一个字段就是分隔符之间的一段内容

         #:第#个字段
         #,#[,#]:离散的多个字段,例如1,3,6
         #-#:连续的多个字段, 例如1-6
         混合使用:1-3,7
    -c 按字符切割,例如#cut -c44-46 file即是显示file文件的第44个字符到第46个字符之间的列
    --output-delimiter=STRING指定输出分隔符,其中STRING即是指代要指定的分隔符,例如*号

    [root@centos7 ~]# getent passwd |cut -d: -f1,3 --output-delimiter=*即是把抽取的列之间的分割符指定为*号,否则就是:号

2)、paste命令

     paste合并两个文件同行号的内容到一行
     paste [OPTION]... [FILE]...
       -d:指定合并后文件内容之间的分隔符,默认用TAB
       -s:所有行合成一行显示,即是每个文件的所有行内容合成一行后,文件间再实现内容合并
     #paste f1 f2,即是以tab为分隔符

     #paste -d: f1 f2,当然也就是指定:号为分隔符
     #paste -s f1 f2

5、wc命令-收集文本统计数据

   计数行总数、单词总数、字符总数,可以对文件或STDIN中的数据运行
   $ wc story.txt
   39 237 1901 story.txt
   行数 单词数 字符数
使用 -l 来只计数行数
使用 -w 来只计数单词总数
使用 -m 来只计数字符总数 

   #wc可以进行标准写入操作,按Ctrl+d可以收集写入文本的统计数据

   [root@centos7 ~]# ls | wc -l,输出的结果是20,说明其实ls的文件是一个一行显示的,只不过终端显示出来的不是一行一行显示的(不统计隐藏文件)

6、sort命令-文本排序

把整理过的文本显示在STDOUT,不改变原始文件
   $sort [options] file(s) 

   对于非数字字符是按照特殊符号-字母顺序排列的

常用选项:
 -r 执行反方向(由大到小)整理
 -n 执行按数字大小整理,即是从小到大顺序排列
 -f 选项忽略(fold)字符串中的字符大小写
 -u 选项(独特,unique )删除输出中的重复行
 -t c 选项使用c做为字段界定符
 -k X 选项使用c字段界定符分隔整理第X列

7、uniq命令-从输入中删除前后相接的重复的行
   uniq [OPTION]... [FILE]...
   -c:显示每行重复出现的次数;
   -d:仅显示重复过的行;
   -u:仅显示不曾重复的行;
注意-连续且完全相同方为重复
常和sort  命令一起配合使用,例如#sort userlist.txt | uniq -c

8、diff命令-比较两个文件之间的区别

    #diff fi ffi,比较fi与ffi两个文件的区别,并输出比较信息

    #diff -u fi ffi,加上选项u输出“统一的(unified)”diff格式文件,最适用于补丁文件 ,所以一般此统一的输出重定向到指定的文件中,譬如diff.log

    如果ffi因为误删而丢失,可以通过以下命令恢复找回ffi文件:

    [root@centos7 ~]#patch -b fi diff.log

    此[root@centos7 ~]#ls中会生成fi.orig文件,其实其就是原来的fi,因为其是fi的备份;同时fi储存的信息变为ffi,恢复找回的ffi就是fi文件,内容是一样的,可以把fi的文件名改为ffi

9、










文本处理工具-1

标签:文本处理工具

原文地址:http://11629193.blog.51cto.com/11619193/1834836

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!