首页 > 系统服务 > 详细

【Linxu学习003】Linux文本处理相关

时间:2016-01-28 19:30:02      阅读:318      评论:0      收藏:0      [点我收藏+]

一、cat命令查看文本内容

cat /etc/passwd

使用这条命令会立即讲文本内容一股脑的显示出来,在虚拟终端下讲不能看到上一页的内容,所以非常不友好,这条命令使用的比较少。

二、使用more或者less命令查看文本文件的内容。

    more命令和less命令都提供了分页功能,但是more一旦到达文件尾部,就会自动退出程序,less命令则不然,它到达文件尾部之后也不会退出程序,还能够翻到上一页,所以使用less命令比较多。

    实际上man命令内部就是调用了less命令打开文档的,所以在man中能够使用的所有快捷键都能在less中使用,比如向下翻一屏、向上翻一屏、翻半屏、查找关键字、退出等都和man相同,不赘述。

三、使用tail或者head查看文件尾和文件头。

    tail命令的详细说明:http://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.html#tail-invocation

    tail命令和head命令都能使用-c或者-n的用法,这两种使用方法也是最常用的:

tail 
        -n    :显示倒数n行数据
        -c    :显示倒数n个字节

    示例:

kdyzm@kdyzm:~$ tail -n 2 /etc/passwd
lightdm:x:119:126:Light Display Manager:/var/lib/lightdm:/bin/false
kdyzm:x:1000:1000:kdyzm,,,:/home/kdyzm:/bin/bash

    如果没有指定-n和-c,则默认显示10行。

    特殊用法:

tail -f     #该命令能够动态等待其他线程向文件追加数据并显示之。

    tail -f名命令执行之后线程就会处于等待状态如果其他线程想该文件中追加了数据,则直接将追加的数据显示出来,这种功能对于日志的查看非常有用。

四、cut命令显示特定列

cut

数据库实际上就是一张张的表,表结构实际上就是行与列,这种结构在文本文件中也能够实现,比如/etc/passwd文件,它使用分隔符‘:‘将一个个的字段分割开如下所示:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
......

如果想要查看某一列的信息或者某几列的信息该怎么办呢?cut命令解决了这个问题

cut
    -d CHARACTER    #指定分隔符
    -f n1,n2...     #指定第几列

示例:

kdyzm@kdyzm:~$ cut -d : -f 1,2 /etc/passwd
root:x
daemon:x
bin:x
sys:x
sync:x
games:x
man:x
lp:x
mail:x
......

五、使用sort命令对文本进行排序

sort命令对"行"进行排序,其功能和asc或者desc相似。

sort
        -n    #按照数值进行排序(默认当做字符串排序)
        -t    #指定分隔符
        -k    #指定按照第几列进行排序
        -u    #相同的行只显示一次

    示例:

kdyzm@kdyzm:~$ sort -nt : -k 4 -u -r /etc/passwd
显示结果略。

    以上命令的意思是:对/etc/passwd按照第4列数值逆序排序并且去除重复行,行分隔符为:

六、uniq命令重复行管理

uniq命令的作用是显示或者不显示重复行(whatis)。

uniq
        -c    #统计重复行信息,将统计结果放到行头
        -d    #只显示重复行
        -u    #只显示非重复行
        -D    #显示所有重复行

    uniq没有排序功能,所以就算是重复行如果没有相邻在一起,则视为非重复行,针对这种情况可以结合sort命令以及管道实现目标功能。

    示例:

kdyzm@kdyzm:~$ uniq -c b.txt 
      1 abc
      1 ab
      1 abc
      1 de
      1 fg
      1 de
      1 abc
      1 ab
      1 a
      1 abc
kdyzm@kdyzm:~$ sort b.txt | uniq -c 
      1 a
      2 ab
      4 abc
      2 de
      1 fg
kdyzm@kdyzm:~$ sort b.txt | uniq -d
ab
abc
de
kdyzm@kdyzm:~$ sort b.txt | uniq -u
a
fg
kdyzm@kdyzm:~$ sort b.txt | uniq -D
ab
ab
abc
abc
abc
abc
de
de
kdyzm@kdyzm:~$

七、使用wc命令进行文本统计

    wc命令统计一个文本文件中有多少行数据、多少个单词、多少个字节。

wc
    -c    #显示有多少各字节
    -m    #显示有多少个字符
    -l    #显示有多少行
    -L    #显示最长行的长度
    -w    #显示有多少个单词

八、使用tr命令转换或者删除字符

    tr命令实际上是一个比较复杂的命令。

tr set1 set2

    set1是源,set2是目标,其字符个数应当相同。

    该命令的执行默认会让线程处于等待状态(等待输入字符),该命令通常结合输入重定向使用。

    

    1. 转换功能示例:

kdyzm@kdyzm:~$ tr ‘a-z‘ ‘A-Z‘ < /etc/passwd
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
DAEMON:X:1:1:DAEMON:/USR/SBIN:/USR/SBIN/NOLOGIN
BIN:X:2:2:BIN:/BIN:/USR/SBIN/NOLOGIN
SYS:X:3:3:SYS:/DEV:/USR/SBIN/NOLOGIN
......

    上述命令将/etc/passwd中所有的小写字母转换成为大写。

    2. 删除功能示例:

kdyzm@kdyzm:~$ tr -d ‘a-z‘ < /etc/passwd
::0:0::/://
::1:1:://:///
::2:2::/:///
::3:3::/:///
......

    删除掉/etc/passwd中所有的小写英文单词。

    3. 使用某些特殊单词代表特殊含义的内容

    具体看http://www.gnu.org/software/coreutils/tr

    常用的有:

    [:alnum:]
        all letters and digits
    [:alpha:]
        all letters
    [:blank:]
        all horizontal whitespace
    [:digit:]
        all digits
    [:lower:]
        all lower case letters
    [:punct:]
        all punctuation characters
    [:space:]
        all horizontal or vertical whitespace
    [:upper:]
        all upper case letters

    使用方法:将上面的转换和删除的例子重写一下:

        (1). 转换


kdyzm@kdyzm:~$ tr [:lower:] [:upper:] < /etc/passwd

 

        (2). 删除

kdyzm@kdyzm:~$ tr -d [:lower:] < /etc/passwd






本文出自 “狂盗一枝梅的博客” 博客,请务必保留此出处http://kdyzm.blog.51cto.com/8316029/1739538

【Linxu学习003】Linux文本处理相关

原文:http://kdyzm.blog.51cto.com/8316029/1739538

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!