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

相关推荐

  • OpenSSL

    一、什么是OpenSSL 在电脑网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通讯,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。 OpenSSL由三部分组成:     libencryp…

    Linux干货 2016-04-25
  • 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。 但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? 答案是需要由用户来为内核指定进程的优先级 大部分进程启动时的优先级是相同…

    Linux干货 2015-02-14
  • centos7上实现LAMP,并搭建wordpress

    实验:LAMP的架构,并搭建wordpress              1、准备环境,                      #mkdir src    …

    2017-08-07
  • Linux基础命令语法

    Linux基础命令语法

    Linux干货 2018-03-11
  • ​iptables简单介绍

    iptables简单介绍 什么是防火墙? 防火墙是工作在主机或网络边缘,能够对其所匹配到的报文根据事先定义好的规则作出相应处理的组件,可以是软件,也可以是硬件,还能软硬结合实现。 UNIX/Linux中对防火墙的实现 早期在openBSD中通过内核中的ipfw实现简单的数据报过滤功能、后来在Linux 2.2内核中使用ipchains来取代,意为链、后来在L…

    Linux干货 2016-03-31
  • N25-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 [root@localhost ~]# ls …

    Linux干货 2017-01-03