Linux 基础(7)——文本处理工具

cat  tac  rev  more  less           head  tail

cut  paste  wc                         sort  uniq  diff

grep  正则表达式                      egrep 扩展正则表达式

1. cat  tac  rev  more  less

(1)cat 查看

            -E 显示$ 换行符

            -T 显示TAB

            -v 显示非打印字符

            -n 显示行号

            -s 将连续的重复空行变成一行

            -A = -vET

Linux 基础(7)——文本处理工具

(2)tac   只行颠倒,每行的内容不颠倒

Linux 基础(7)——文本处理工具

(3)rev

Linux 基础(7)——文本处理工具

(4)分页查看文件内容

 more:  分页查看文件,空格翻页,q退出

 less :一页一页地查看文件

          / 文本   搜索文本

          n 跳到下一个    N跳到上一个

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

2. head  tail

(1)head  (默认显示前10行)

                 -n 行号        显示前n行    或 -行号 显示前n行

                 -c 字节数     显示前n个字节

 

(2)tail    (默认显示后10行)

                 -n 行号       显示后n行      或   -行号 显示后n行

                 -c 字节数    显示后n个字节

                 -f 动态显示

 例1:显示/etc/passwd文件的第11行至第20行

       head -n 20 /etc/passwd |tail

Linux 基础(7)——文本处理工具

例2:利用 cat /dev/urandom 生成10位字符长度的随机密码(包含大小写字母及数字)

        cat  /dev/urandom  | tr -d -c [:alnum:] | head -c 10 ;echo

Linux 基础(7)——文本处理工具

3. cut  paste  wc

(1)cut

             -d 指定分隔符

             -f  n[,n-r] 选取第几列

             –output-delimiter 指定输出符

 例1:cut -d: -f1,3 –output-delimiter=’.’ /etc/passwd

Linux 基础(7)——文本处理工具

例2:显示当前主机第一个网卡的IP地址

       ifconfig |head -n 2| tail -n 1| tr -s ‘ ‘ : |cut -d: -f3

Linux 基础(7)——文本处理工具

例3:查出/app目录的空间使用量

        df|tr -s ” ” % |head -n 4 |tail -n 1 |cut -d% -f5

        df |head -n 8 |tail -n 1 |cut -c 44-46

Linux 基础(7)——文本处理工具

(2)paste  粘合

        paste f1 f2 [f3]

        paste -s f1 将文件内容变成一行显示 ,也可以用 tr ‘\n’ ‘\t’ 实现

        paste -d “” f1 f2 [f3] 合并后的分隔符,默认TAB

Linux 基础(7)——文本处理工具

(3)wc: word count  统计

             -m 字符数   一个汉字算1个字符

             -c 字节       一个汉字算3个字节

             -l 行数

             -w 单词数

       wc 行数 单词数 字节

Linux 基础(7)——文本处理工具

4. sort  uniq  diff

(1)sort 排序

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

             -n    执行按数字大小整理

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

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

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

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

Linux 基础(7)——文本处理工具

(2)uniq 去除连续的重复行

       要想去除非连续的行,先用sort排序

              -c 显示连续重复的次数

              -d 仅显示重复的次数

              -u 仅显示不曾重复的行

Linux 基础(7)——文本处理工具

 

(3)diff f1 f2    仅比较区别

        diff -u f1 f2 > diff.log 生成补丁

        mv f2 f2.rm  相当于删除了文件。

        patch -b f1 diff.log    通过补丁还原文件 ,生成的f1为原来的f2,fi.orig为原f1

        mv f1 f2    还原原始的新文件名

        mv f1.orig f1  还原原始的旧文件名

        diff f2 f2.rm  比较还原回来的新文件与被删除的文件,发现没有区别。

Linux 基础(7)——文本处理工具

6. grep

grep  :  由正则表达式字符及文本字符所编写的过滤条件

grep root /etc/passwd

grep “$USER” /etc/passwd

grep `whoami` /etc/passwd

Linux 基础(7)——文本处理工具

 –color=auto:  对匹配到的文本着色显示

 -v:显示不被pattern 匹配到的行  [^] 反向

 -i: 忽略字符大小写

 -n:显示匹配的行号

 -c:  统计匹配的行数

 -o:  仅显示匹配到的字符串

 -q:  静默模式,不输出任何信息     或 &> /dev/null

 -A #: after,  后#行

 -B #: before,  前#行

 -C # :context,  前后各#行

Linux 基础(7)——文本处理工具

 -e :实现多个选项间的逻辑or 关系   相当于“…\|…”

 -w :匹配 整个单词

Linux 基础(7)——文本处理工具

 -E :使用ERE

 -F :相当于fgrep

7. 正则表达式

1). 匹配任意单个字符

       [] 匹配指定范围内的任意单个字符

       [^] 匹配指定范围外的任意单个字符

       [:alnum:] 或 [0-9a-zA-Z]

       [:alpha:] 或 [a-zA-Z]

       [:upper:] 或 [A-Z]

       [:lower:] 或 [a-z]

       [:blank:] 空白字符(空格和制表符)

       [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

       [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)

       [:digit:] 十进制数字 或[0-9]

       [:xdigit:]十六进制数字

       [:graph:] 可打印的非空白字符

       [:print:] 可打印字符

       [:punct:] 标点符号

 

2)*  匹配前面的字符任意次,包括0次

            贪婪模式:尽可能长的匹配

        .*  任意长度的任意字符

        \?  匹配其前面的字符0 或1次

        \+  匹配其前面的字符至少1次

        \{n\}  匹配前面的字符n次

        \{m,n\}  匹配前面的字符至少m 次,至多n次

        \{,n\}  匹配前面的字符至多n次

        \{n,\}  匹配前面的字符至少n次

Linux 基础(7)——文本处理工具

 

3)位置锚定:定位出现的位置

            ^  行首锚定,用于模式的最左侧

            $  行尾锚定,用于模式的最右侧

            ^PATTERN$ 用于模式匹配整行

            ^$ 空行      grep -v ^$  或 tr -s ‘\n’

Linux 基础(7)——文本处理工具

         ^[[:space:]]*$ 空白行

         \< 或 或 \b  词首锚定,用于单词模式的左侧

         \> 或 或 \b  词尾锚定;用于单词模式的右侧

         \<PATTERN\>

 

4)分组:\(\)  将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\).*

        分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

        \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

Linux 基础(7)——文本处理工具

       后向引用:引用前面的分组括号中的模式所匹配字符 而非模式本身   

       或者:\|      例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat

8. egroup 及 正则表达式

egrep         egrep = grep -E

     扩展的正则表达式 (除了\< , \> , \b 其他的都去掉\)

(1)  字符匹配:

         .  任意单个字符

         []  指定范围的字符

         [^] 不在指定范围的字符

(2) 次数匹配:

         * :匹配前面字符任意次

         ?  : 0 或1次 次

        + :1 次或多次

        {m} :匹配m次 次

        {m,n} :至少m ,至多n次

(3)位置锚定:

        ^ : 行首

        $ : 行尾

        \<, \b : 语首

        \>, \b : 语尾

(4)分组:()

       后向引用:\1, \2, …

       或者:a|b: a 或b  例:C|cat: C 或cat  (C|c)at:Cat 或cat

 

 

 

 

 

 

 

 

原创文章,作者:along,如若转载,请注明出处:http://www.178linux.com/83129

(0)
alongalong
上一篇 2017-07-29 17:01
下一篇 2017-07-29 17:09

相关推荐

  • mongodb的复制集实现

    简介:  mongodb有两种类型的复制,第一种是同于MySQL的主从复制模式,第二种是复制集,提供了自动故障转移的主从复制集群。其中复制集没有固定的主节点,当一个主机的故障后从节点会重新“选举”出一个新的主节点,从而提高的系统的可用性 一、实验环境: (1)各节点信息: node1: 172.16.2.12 node2: 172.16.2.13 …

    Linux干货 2015-09-05
  • 计算机基础与linux入门

    计算机硬件组成:     运算器:主要完成算术运算,逻辑运算     控制器:控制指令的执行序列,根据指令的功能给出实现指令功能所需要的控制信号     存储器:存放程序以及一些数据     &nbs…

    Linux干货 2015-12-19
  • N22-℡浮生.若夢 ╮第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash ## declare -i log_user declare -i notlog_user for i …

    Linux干货 2016-12-12
  • N25-第十三周博客作业

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程) 1)共享名为shared,工作组为magedu;2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;3)添加samba用户gentoo,centos和ubu…

    Linux干货 2017-04-19
  • 创建CA 和申请证书

    创建CA 和申请证书1生成私有CA的私钥:(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)注:CA的私钥文件必须放在/etc/pki/CA/private/cakey.pem 这个路径里2创建序列号 ,数据库文件touch  /etc/pki/CA/index.tx…

    Linux干货 2017-07-17
  • vi(vim)编辑器的使用

    vim编辑器:全屏编辑器,模式编辑器 vim模式:     编辑模式:     输入模式:     末行模式:     转换模式:      &nbs…

    Linux干货 2016-08-15