文本处理命令

cat

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

      -E:显示行结束符$

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

      -A:显示所有控制符

      -b:非空行编号

      -s:压缩连续的空行成一行

[root@centos7 ~]#cat -b /data/f1.txt

     1  ddnnchddbc

     2  cwfwe

     3  dwefj

[root@centos7 ~]#nl /data/f1.txt

     1  ddnnchddbc

     2  cwfwe

     3  dwefj

有时候从windows上传文件到linux由于文件系统的原因,会有变化,这个比较常用;显示所有控制符  cat  -A  FileName

tac

它与cat正好相反,从下面的例子可以看出,它是以一行作为一个单元,倒序排列显示

#cat f1.txt

   ddnnchddbc

   cwfwe

   dwefj

#tac f1.txt

dwefj

cwfwe

ddnnchddbc

rev

它是以每个字符为一个单位,在一行上进行倒叙排列显示

#rev f1.txt

   cbddhcnndd

   ewfwc

   jfewd

分页查看文件内容

more:分页查看文件

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

less:一页一页地查看文件或者STDIN输出,man帮助底层使用的分页器就是less

     /文本    搜索

显示文本前N行或者后行内容

head

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

  -c N  指定截取前N字节

   #ifconfig |head -c 3

     ens

   -n N 指定截取前N行

   #ifconfig |head -n 4

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.48.106  netmask 255.255.255.0  broadcast 192.168.48.255

        inet6 fe80::a425:953d:896d:db0c  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:d1:13:0f  txqueuelen 1000  (Ethernet)

     -N  指定行数  同上一个相同含义

tail

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

      -c N指定获取后N字节

      -n N指定获取后N行

      -N 同head中一样的规定

      -f     --follow 跟踪显示文件fd新追加的内容,常用日志监控  

      -F  跟踪文件名

      -f 与-F的区别;

          -f 跟踪的是文件的描述符,如果文件删除,通过tail -f 看不出来,且重新新建并不能追踪到。

          -F 跟踪的是文件名称,如果文件状态发生变化,会将信息实时输出出来

tailf 类似tail –f,当文件不增长时并不访问文件;平时用的·比较多的是 tail  -1000f 指定输出文件后1000行

随机截取某个文件的指定字节

tr -dc '[:alnum:]' < /dev/urandom |head -c10

tail -f /data/f1.txt  是根据文件标识符来监控,如果文件删除,并不会提示

pidof tail 可以查看进程编号

ls /proc/`pidof tail `/fd -l     fd  表示的是文件描述符

cut 按列抽取文本

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

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

     -f FILEDS(区域):

        N:第N个字段

        离散使用:1,3,6

        混合使用:1-3,7

     -c 按照字符切割

     --output-delimiter=STRING指定输出分隔符;比如按照 &号指定并输出

截图前3个字段,并且修改输出的分隔符

  cut -d: -f1,3 --output-delimiter=";" /etc/passwd

使用cut取ip

ifconfig ens33 |head -n2|tail -n1 |tr -s " "|cut -d" " -f3

paste  合并两个文件同行号的列到一行

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

         -d 分隔符:指定分隔符,默认用TAB

         -s : 所有行合成一行显示

     #cat f1.txt

       ddnnchddbc

       cwfwe

       dwefj

     #cat f2.txt

       adnajsac

       fwdfjkwh

       wfwejfhwiuhy

       dsmfkh

    #paste f1.txt f2.txt

         ddnnchddbc      adnajsac

         cwfwe   fwdfjkwh

         dwefj   wfwejfhwiuhy

                     dsmfkh

对比cat;

        #cat f1.txt f2.txt

          ddnnchddbc

          cwfwe

          dwefj

          adnajsac

          fwdfjkwh

          wfwejfhwiuhy

          dsmfkh

可以看出cat相当于是追加 >> ;paste是以将同行号的列整合到一行

分析文本工具

   文本数据统计:wc

   整理文本:sort

   比较文件:diff和patch

wc 收集文本统计数据

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

   常用选项

    -l 只计数行数

   -w 只计数单词总数

   -c 只计数字节总数

   -m只计数字符总数

   -L 显示文件中最长行的长度(字节)

   [root@centos7 data]#wc f1.txt

        3     3       23     f1.txt

      行数 字数 字节数

sort 文本排序

      sort [options] file(s)

      常用选项

        -r 倒序排

        -R 随机排序

        -n 执行按数字大小整理

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

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

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

        -k X 选项按照使用c字符分隔的X列来整理能够使用多次

uniq 从输入中删除前后连续的重复的行,隔行重复不算重复

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

       uniq  FileName 默认去掉重复的行

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

       uniq -d 仅显示重复过的行

      #uniq -c f3.txt

             1 s

             1 d

             3 c

             1 k

             1 f

             2 k

       #uniq -d f3.txt

              c

              k

        可以和sort搭配一起使用

        #sort f3.txt |uniq -c

             3 c

             1 d

             1 f

             3 k

             1 s

diff  比较两个文件之间的区别

       含义:diff描述的是两个文件不同方式,怎样通过改变第一个文件之后与第二个匹配

     

       #diff f2.txt f3.txt

          1,4c1,10     

          < adnajsac

          < fwdfjkwh

          < wfwejfhwiuhy

          < dsmfkh

          ---

          > s

          > d

          > c

          > c

          > c

          > k

          > f

          > k

          > k

      其中;第一行 1,4c1,10 表示的是第一个文件的行1-4,中间字母c 表示需要在第一个文件上操作

   (a=add,c=change,d=delete) ,后面数字1,10表示第二个文件的行;主要意思是第一个文件的[1,4]行修改才与第一个文件的[1,10]相匹配

    前面带 < 的部分表示左边f2.txt文件行的内容, 带> 的部分表示右边文件f3.txt行的内容。--- 则是两个文件内容的分隔符号

   

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

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

    #diff -u f2.txt f3.txt

       --- f2.txt      2020-08-09 18:13:05.452670110 +0800

       +++ f3.txt      2020-08-10 20:46:50.784969691 +0800

       @@ -1,4 +1,10 @@

      -adnajsac

      -fwdfjkwh

      -wfwejfhwiuhy

      -dsmfkh

      +s

      +d

      +c

      +c

      +c

      +k

      +f

      +k

      +k

      +

   - 表示删除f2.txt中的字符,才能与f3.txt匹配

   +表示增加f2.txt中的字符,才能与放.txt匹配

    统计当前主机被连接次数最多的请求;

       #netstat -nt|tr -s " " :|cut -d: -f6|sort -nr|head -3

                     192.168.48.1

                     192.168.48.1

                      Foreign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值