Linux文本处理工具及grep

常见的文本处理工具
在日常的Linux运维工作当中,我们经常要在一些文本当中抽取过滤出我们所需要的信息,从而达到我们的需求,需要特定的文本处理工具来帮我们完成此类操作

本章节主要讲解的内容有:
文件查看:cat
分页查看文本:less、more
抽取文件特定行数:head、tail
抽取文本特定列:cut
合并文本:paste
文本统计:wc
文本排序并统计:sort、uniq
比较文件:diff、patch

cat:连结查看文本和输出至标准输出
    -n:为每行添加行号
    -A:显示所有控制符
    -E:为每行显示结束符$
    -s:压缩重复的空白行
    -b:非空行进行编号
[root@CentOS6 ~]# cat -A test.txt    #显示所有控制字符
one$
two$
$
three$
$
[root@CentOS6 ~]# cat -E test.txt    #在每行结尾添加$符
one$
two$
$
three$
$
[root@CentOS6 ~]# cat -b test.txt    #非空行编号
    1one
    2two
    3three
[root@CentOS6 ~]# cat -n test.txt      #显示行号
    1one
    2two
    3
    4three
    5
[root@CentOS6 ~]# cat -s test.txt    #压缩空白行
one
two
three
[root@CentOS6 ~]#

nl:将文件每行添加行号显示

tac:逆序显示文件内容
rev:反向显示文件内容

more: 分页查看文件
more [OPTIONS...] FILE...
-d: 显示翻页及退出提示

less:一页一页查看文本文件
查看时有用的命令包括:
/文本搜索文本
n/N跳到下一个or 上一个匹配

head:抽取文本前n行
    -n #:抽取文本前#行
    -c #:抽取文本前#个字节7
    -#:指定行数

tail:抽取文本后n行
    -n #:抽取文本后#行
    -#:指定行数
    -c #:抽取文本后#个字节
    -f:追踪文本新添加的内容,不退出文本
[root@CentOS6 ~]# head -3 /etc/passwd    #抽取文本的前三行
[root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# tail -3 /etc/passwd    #抽取文本的后三行
nologin:x:510:514::/home/nologin:/sbin/nologin
mage:x:511:515::/home/mage:/bin/bash
wang:x:512:516::/home/wang:/bin/bash
[root@CentOS6 ~]# head -c 100 /etc/passwd    #抽取文本前100个字节
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nol[root@CentOS6 ~]# 
[root@CentOS6 ~]# tail -c 100 /etc/passwd    #抽取文本后100个字节
ome/nologin:/sbin/nologin
mage:x:511:515::/home/mage:/bin/bash
wang:x:512:516::/home/wang:/bin/bash
[root@CentOS6 ~]#

cut:抽取文本
    -d DELIMITER:指明分隔符,默认tab
    -f FILEDS:
        #:第#个字段
        #,#:离散表示法,例如1,3,5
        #-#:连续表示法,例如1-3
        #,#-#,#:混合表示法例如,1,3-5,7
    -c:按字符切割
    --output-delimiter:指定输出分隔符
123456789 [root@CentOS6 ~]# cat test.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# cut -d: -f1,3 test.txt    #以:为分隔符,抽取文本的第1,3列
root:0
bin:1
daemon:2
[root@CentOS6 ~]#

paste:合并文本
    -d DELIMITER:指定输出分隔符
    -s:所有行显示为一行
[root@CentOS6 ~]# paste issue test.txt    #将两个文本内容合并
CentOS release 6.8 (Final)root:x:0:0:root:/root:/bin/bash
Kernel \r on an \mbin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]# paste -s issue test.txt    #一个文本内容显示为一行
CentOS release 6.8 (Final)Kernel \r on an \m
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@CentOS6 ~]#

wc:文本统计
    -c:统计字节数
    -l:统计行数
    -w:统计单词书
    -m:统计字节数
[root@CentOS6 ~]# wc -l /etc/passwd    #统计行数
47 /etc/passwd
[root@CentOS6 ~]# wc -w /etc/passwd    #统计单词数
67 /etc/passwd
[root@CentOS6 ~]# wc -m /etc/passwd    #统计字节数
2143 /etc/passwd
[root@CentOS6 ~]# wc -c /etc/passwd    #统计字节数
2143 /etc/passwd
[root@CentOS6 ~]#


sort:文本排序
    -u:重复的行只出现一次
    -r:逆序排序
    -n:按数字从小到大排序
    -f:忽略大小写
    -t DELIMITER:指明分隔符
    -k #:按照指定的分隔符来指定列
[root@CentOS6 ~]# cat test.txt 
1
1
2
1
3
[root@CentOS6 ~]# sort -u test.txt    #重复的行只显示一次
1
2
3
[root@CentOS6 ~]# sort -n test.txt    #数字从小到大排序
1
1
1
2
3
[root@CentOS6 ~]# sort -r test.txt    #逆序排序
3
2
1
1
1
[root@CentOS6 ~]# sort -t' ' -k1 -n test.txt    #对指定的列排序
1
1
1
2
3
[root@CentOS6 ~]#

uniq:统计重复的行
    -c:显示重复行的重复次数
    -d:仅显示重复过的行
    -u:显示不曾重复的行
    一般和sort命令搭配使用
[root@CentOS6 ~]# cat test.txt 
1
1
2
1
3
[root@CentOS6 ~]# uniq -c test.txt    #显示重复行的重复次数
      2 1
      1 2
      1 1
      1 3
[root@CentOS6 ~]# uniq -d test.txt    #仅显示重复的行
1
[root@CentOS6 ~]# uniq -u test.txt    #显示不曾重复的行
2
1
3
[root@CentOS6 ~]#

diff:比较两个文件的区别
以逐行的方式比较两个文件的不同之处
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATHCH_FILE
-u:使用unfied机制,即显示要修改的行的上下文,默认为三行

Linux文本处理工具及grep

Linux文本处理工具及grep

patch:向文件打补丁
    path [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
    patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE

Linux文本处理工具及grep

相关推荐