zoukankan      html  css  js  c++  java
  • 1.5 Linux基础(五)

    1.5.1 文件查看cat,tac,rev,more,less,head,tail

    1.5.1.1 文件查看命令:cat,tac,rev

    • cat [OPTION]... [FILE]...
      • -E: 显示行结束符$

      • -n: 对显示出的每一行进行编号

      • -A:显示所有控制符

    [root@CentOS7 ~]# cat >>f1 <<EOF
    > df
    > df
    > EOF  
    > EOF  
    >    ##为什么没有退出来,EOF后面不能加空格
    [root@CentOS7 ~]# cat -A f1
    dfl$
    dsfj$
    [root@CentOS7 ~]# cat -n f1
     1	dfl
     2	dsfj
     
    [root@CentOS7 ~]# cat -E f1
    dfl$
    dsfj$
     EOF$
    dfl$
    dsfj$
     EOF$
    dfj$
    
    • -b:非空行编号
    [root@CentOS7 ~]# cat -b f1
     1	dfl
    
    
    
     2	dsfj
     3	 EOF
     4	dfl
     5	dsfj
     6	 EOF
     7	dfj
     8	fdksfl
     9	dfj
    10	fdksfl
    11	dfj
    12	fdksfl
    
    • -s:压缩连续的空行成一行
    [root@CentOS7 ~]# cat f1
    dfl
    
    
    
    
    dsfj
     EOF
    dfl
    dsfj
     EOF
    [root@CentOS7 ~]# cat -s f1
    dfl
    
    dsfj
     EOF
    dfl
    dsfj
     EOF
    
    • tac:逆序
    [root@CentOS7 ~]# tac f1
    fdksfl
    dfj
    fdksfl
    dfj
    fdksfl
    dfj
     EOF
    dsfj
    dfl
     EOF
    dsfj
    
    • rev:逆序(文件中的每一行都倒着显示)
    [root@CentOS7 ~]# rev f1
    lfd
    jfsd
    FOE 
    lfd
    jfsd
    FOE 
    jfd
    lfskdf
    

    1.5.1.2 more

    • 分页查看文件

    more [OPTIONS...] FILE...

    • -d: 显示翻页及退出提示

    1.5.1.3 less

    一页一页地查看文件或STDIN输出

    查看时有用的命令包括:

    /文本 搜索 文本

    n/N 跳到下一个 或 上一个匹配

    less 命令是man命令使用的分页器

    1.5.1.4 head

    head [OPTION]... [FILE]...

    • -c #: 指定获取前#字节
    [root@CentOS7 data]# head -c4 /etc/passwd
    root[root@CentOS7 data]# head -c8 /etc/passwd
    root:x:0[root@CentOS7 data]# 
    
    • -n #: 指定获取前#行

    • -#: 指定行数

    [root@CentOS7 data]#  head -n2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    

    1.5.1.5 tail

    tail [OPTION]... [FILE]...

    • -c #: 指定获取后#字节

    • -n #: 指定获取后#行相当于-#

    • -f: 跟踪显示文件fd新追加的内容,常用日志监控相当于 --follow=descriptor

    • -F: 跟踪文件名,相当于—follow=name --retry

    tailf 类似tail –f,当文件不增长时并不访问文件

    1.5.2 按列抽取文本cut

    cut [OPTION]... [FILE]...

    显示文件或STDIN数据的指定列

    • -d DELIMITER: 指明分隔符,默认tab

    • -f FILEDS:

    • #: 第#个字段

    • #,#[,#]:离散的多个字段,例如1,3,6

    • #-#:连续的多个字段, 例如1-6,混合使用:1-3,7

    • -c 按字符切割

    • --output-delimiter=STRING指定输出分隔符

    显示文件或STDIN数据的指定列

    [root@CentOS7 data]# cat /etc/passwd |cut -d: -f1 
    root
    bin
    daemon
    adm
    lp
    sync
    [root@CentOS7 data]# cut -d: -f1 /etc/passwd ##取出用户名
    [root@CentOS7 data]# cat /etc/passwd | cut -d: -f7 
    /bin/bash
    /sbin/nologin
    
    [root@CentOS7 data]#cut -c2-5 /usr/share/dict/words
    ##取出第二到第五个字节
    

    1.5.3 paste

    合并两个文件同行号的列到一行(横向合并)

    paste [OPTION]... [FILE]...

    • -d 分隔符:指定分隔符,默认用TAB
    • -s : 所有行合成一行显示
    [root@CentOS7 scripts]# cat f1
    aaa
    bb
    cc
    [root@CentOS7 scripts]# cat f2
    xxx
    yy
    [root@CentOS7 scripts]# paste f1 f2 
    aaa	xxx
    bb	yy
    cc	
    [root@CentOS7 scripts]# cat f1 f2
    aaa
    bb
    cc
    xxx
    yy
    [root@CentOS7 scripts]# cat f1 f2 >f4
    [root@CentOS7 scripts]# cat f4
    aaa
    bb
    cc
    xxx
    yy
    [root@CentOS7 scripts]# paste -s f1 f2 
    aaa	bb	cc
    xxx	yy
    [root@CentOS7 scripts]# paste -d ":" f1 f2
    aaa:xxx
    bb:yy
    cc:
    

    1.5.4 收集文本统计数据wc

    • 计数单词总数、行总数、字节总数和字符总数

    • 可以对文件或STDIN中的数据运行

    • wc story.txt

      39 237 1901 story.txt

      行数 字数 字节数 文件名

    • 常用选项

      • -l 只计数行数

      • -w 只计数单词总数

      • -c 只计数字符总数

      • -L 显示文件中最长行的长度

    [root@CentOS7 data]# cat /etc/passwd |wc -l 
    64
    [root@CentOS7 data]# cat /etc/passwd |wc -L
    99
    [root@CentOS7 data]# cat /etc/passwd |wc -c
    3171
    [root@CentOS7 data]# cat /etc/passwd |wc -w
    109
    

    1.5.5 文本排序sort

    sort [options] file(s)

    默认排序会把相同的行放在一块

    常用选项

    • -r 执行反方向(由上至下)整理

    • -R 随机排序

    [root@CentOS7 scripts]# seq 72 |sort -R |head -n1
    35 ##随机排序,取出随机数,抽奖
    
    • -n 执行按数字大小整理

    • -f 选项忽略(fold)字符串中的字符大小写

    • -u 选项(独特,unique)删除输出中的重复行

    • -t : 选项使用:做为字段界定符

    • -k # 选项按照使用c字符分隔的#列来整理能够使用多次 #(为数字)

    练习:统计一篇英文文章中,单词出现频率最高的前3个单词

    [root@CentOS7 data]# cat f1|tr " " "
    "|tr -d [:punct:]|sort|uniq -c|sort -n|tail -n3
    9 and
    9 of
    15 the
    

    1.5.6 uniq 默认会将重复行排序到一起

    uniq命令:从输入中删除前后相接的重复的行

    uniq [OPTION]... [FILE]...

    • -c: 显示每行重复出现的次数

    • -d: 仅显示重复过的行

    • -u: 仅显示不曾重复的行

    注:连续且完全相同方为重复-

    常和sort 命令一起配合使用:

    sort userlist.txt | uniq -c

    实验:对/var/log/httpd/access_log 日志文件访问ip进行排序,取出访问量最高的前十个ip

    cat /var/log/httpd/access_log  | cut -d" " -f1|sort |uniq -c |sort -nr|head -n10
    

    1.5.7 比较文件diff 命令

    比较两个文件之间的区别

    [root@CentOS7 data]# diff foo.conf foo2.conf 
    5c5 
    <   use_widgets = no  
    ---  
    >  use_widgets = yes ##注明第5行有区别(改变) 
    

    1.5.8 复制对文件改变patch

    diff 命令的输出被保存在一种叫做“补丁”的文件中

    使用 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件

    patch 复制在其它文件中进行的改变(要谨慎使用) 适用

    -b 选项来自动备份改变了的文件

    $ diff -u foo.conf foo2.conf > foo.patch 
    
    ##将文件foo.conf和foo2.conf比较差异,将生成的补丁放到foo.patch++ 
    
    $ patch foo.conf foo.patch 
    
    ##将foo.conf打上补丁就变成了foo2.conf文件中的内容,不过foo.conf文件内容就被覆盖了
    
    $ patch -b foo.conf foo.patch  
    ##将foo.conf先备份,后打补丁,找回foo2.conf 
    

    练习:

    1、找出ifconfig “网卡名”命令结果中本机的IPv4地址

    [root@CentOS7 scripts]# ifconfig ens33|head -n2 |tail -n1|tr -s ' '|cut -d' ' -f3 
    192.168.110.131
    

    2、查出分区空间使用率的最大百分比值

    [root@CentOS7 scripts]# df |grep "/dev/sd" |tr -s ' ' '%'|cut -d% -f5|sort -n |tail -n1
    16
    

    3、查出用户UID最大值的用户名、UID及shell类型

    [root@CentOS7 scripts]# cat /etc/passwd |sort -t: -k3 -nr|head -n1|cut -d: -f1,3,7
    nfsnobody:65534:/sbin/nologin
    

    4、查出/tmp的权限,以数字方式显示

    [root@CentOS7 scripts]# stat /tmp|cut -d'/' -f1|head -n4|tail -n1|cut -d'(' -f2
    1777
    [root@CentOS7 scripts]# stat /tmp |egrep -o "([0-9]{3,4}"
    

    5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

    [root@CentOS7 scripts]# netstat -nt |tr -s ' ' :|cut -d: -f6|tr -dc '[0-9].
    '|sort|uniq -c |sort -nr
    3 192.168.110.1
    2 
    1 192.168.110.128
    [root@CentOS7 scripts]# netstat -nt |grep "tcp"|tr -s ' ' ':'|cut -d: -f6|sort |uniq -c |sort -nr 
    2 192.168.110.1
    1 192.168.110.128
    
  • 相关阅读:
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale
    CodeForces 785B Anton and Classes
    CodeForces 785A Anton and Polyhedrons
    爱奇艺全国高校算法大赛初赛C
    爱奇艺全国高校算法大赛初赛B
    爱奇艺全国高校算法大赛初赛A
    EOJ 3265 七巧板
    EOJ 3256 拼音魔法
    EOJ 3262 黑心啤酒厂
  • 原文地址:https://www.cnblogs.com/huangsefeizhu/p/11505874.html
Copyright © 2011-2022 走看看