常用文本处理工具 及 正则表达式详解

  >>>文本处理工具<<<

一:文本查看(cat、less、more、head、tail、cut、paste)

cat  (常用于显示内容较少的文本)

功能:查看文件内容,创建文件,文件合并,追加文件内容

选项(options):

 ①查看文件内容:

 -A  = -vte  显示文件所有内容(包括回车[$]和特殊字符)

常用文本处理工具 及 正则表达式详解

 -n   显示行编号,空白行也编号    常用文本处理工具 及 正则表达式详解联想:nl filename 也能显示文本文件的行号偶

 -b   显示行编号,但对空白行不编号

 -e/E   在输出内容的每一行后加上$(换行符)符号

 -s    合并连续空白行  

 -t/T  显示tab(^I)

 -v  显示非打印字符串

 –version  显示版本信息并退出     

 ②创建文件并写入文件内容(与重定向>配合使用):

  语法:cat>filename<<endmark

  (filename  新创建的文件名

      endmark   结束标志,当输入endmark时自动退出编辑)

    常用文本处理工具 及 正则表达式详解

 ③文件合并(与重定向>配合使用)

 cat f1 f2>f3   将f1、f2文件内容写入到f3中(覆盖f3原有内容)

 cat f1 f2>>f3  将f1、f2文件内容写入到f3中(保留f3原有内容)

 ④追加文件内容(与重定向>配合使用)

 cat>>filename<<endmark

more(常用于内容较多,需要分页的文本文件)

1.功能:

  • 逐页显示文件内容
         space/f:显示下一页
         b(back):显示上一页
  • 启动时就加载整个文件,并能够搜索字符串和跳行
2.命令格式:
   more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file … ]
3.options:
  +n      从笫n行开始显示

  -n       定义屏幕大小为n行

  +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  

  -c       从顶部清屏,然后显示
  -d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,  并禁用响铃功能
  -l        忽略Ctrl+l(换页)字符

  -p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

  -s       把连续的多个空行显示为一行
  -u       把文件内容中的下划线去掉
 4.常用快捷方式:
  Enter :   向下n行,需要定义。默认为1行

  Ctrl+F :  向下滚动一屏

  空格键:  向下滚动一屏
  Ctrl+B:  返回上一屏
  = :      输出当前行的行号
  :f     输出文件名和当前行的行号

  V      调用vi编辑器

  !  命令    调用Shell,并执行命令 
 q       退出more

less(man帮助文档使用)
1.功能:
  分页显示文件内容,但在查看文件之前不会加载整个文件(不同于more)
2.命令格式:
  less [参数]  filename 
3.options:
  b <缓冲区大小> 设置缓冲区的大小

 -e  当文件显示结束后,自动离开

-f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g  只标志最后搜索的关键词

-i  忽略搜索时的大小写

-m  显示类似more命令的百分比

-N  显示每行的行号

-o <文件名> 将less 输出的内容在指定文件中保存起来

-Q  不使用警告音

-s  显示连续空行为一行

-S  行过长时间将超出部分舍弃

-x <数字> 将“tab”键显示为规定的数字空格
4.常用快捷键:
  /string:向下搜索“字符串”的功能
 ?string:向上搜索“字符串”的功能

 n:重复前一个搜索(与 / 或 ? 有关)

 N:反向重复前一个搜索(与 / 或 ? 有关)

 b  向后翻一页

 d  向后翻半页

 h  显示帮助界面

 Q  退出less 命令

 u  向前滚动半页
 y  向前滚动一行
 space键:滚动一行
 Enter键: 滚动一页
 [pagedown]: 向下翻动一页
 [pageup]:   向上翻动一页

head

-n  行号 /   -行号   显示前n行

-c  以字节为匹配单位,显示前n个字节 

tail

-n  行号 /  -行号   显示后几行

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

-f                          动态跟踪显示文本增加的内容(常用于日志监控)

日志监控用法:

常用文本处理工具 及 正则表达式详解追加信息到file1文件中

常用文本处理工具 及 正则表达式详解再打开一个终端,利用 tail -f  file1 来实时追踪file1的变化

cut(常与tr一起连用)

-d 指定分隔符

-f 选取第几列:

     截取某行:cut -fn

     截取连续几行:cut -fm-n

     同时截取不连续与连续行:cut -fm-n,j(注意:用隔开)

–output-delimiter 指定输出符

     eg: cut -d: -f1,3 –output-delimiter=’|’ /etc/passwd   将原有:替换成 |

            常用文本处理工具 及 正则表达式详解=

paste 合并文件内容

paste file1 file2

-d 指定分隔符(默认到TAB)

-s 所有行合并成一行显示(合并单个文件)

常用文本处理工具 及 正则表达式详解

二:文本分析工具(wc、sort、diff与patch)

WC (文本数据统计工具)

1.功能:

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

※  wc  file    图二所示结果依次是:  行数  单词数   字节数($、^I等其他隐藏字符也算一个字节偶)

常用文本处理工具 及 正则表达式详解  图一

常用文本处理工具 及 正则表达式详解     图

2.options:

  -l   总行数

  -w  单词总数

  -c   字节总数

  -m  字符总数

sort(默认升序)

1.options:

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

    -n 执行按数字大小整理

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

    -u (unique) 删除输出中的重复行

    -t c    选项使用c做为字段界定符(与  -k  搭配使用效果更佳常用文本处理工具 及 正则表达式详解

    -k X   选项按照使用c字符分隔的X列来整理能够使用多次(与 -t 搭配使用效果更佳常用文本处理工具 及 正则表达式详解

2.常见用法:

    ①  sort  -t符号m   -kn  -n     以符号m为间隔符,取第n列按数字大小对文本进行排序

    sort -t: -k3 -n  /etc/passwd      根据用户UID大小对用户进行默认排序

    ②与uniq搭配使用,对有分散的重复行文本内容排序常用文本处理工具 及 正则表达式详解,例题:

       常用文本处理工具 及 正则表达式详解请对将此字符串:welcome to magedu linux 中的每个字符
去重并排序,重复次数多的排到前面

           解题思路: 输出welcome to magedu linux–>利用grep竖向输出字母–>sort对字母进行排序(默认升序)–> uniq -c 计算每个连续重复行出现次数(谨记:必须先用sort将分散的重复行变为连续行才能用 uniq -c 进行统计)–>再次利用  sort -rn  将其按照数字大小对其降序排列

                echo welcome to magedu linux| grep -o [[:alpha:]]| sort|uniq -c|sort -rn

               常用文本处理工具 及 正则表达式详解

uniq  (将连续重复行显示为一行)

1.options:

-c  将连续行显示为一行,并显示连续行出现的次数(如下图)

常用文本处理工具 及 正则表达式详解

-d  仅显示连续重复行

-u  仅显示不连续重复的行

2.常见用法:

与sort配合使用(见sort常见用法②例题)

diff与patch(生成补丁文件并为原始文件打补丁)

※diff  (比较两文件不同)

常用文本处理工具 及 正则表达式详解

options:

  -u  输出统一的diff文件(这就是我们常说的补丁文件了!!!!常用文本处理工具 及 正则表达式详解

※patch(为原始文件打补丁  谨慎使用

用法:

     patch  -b  原始文件  补丁文件       给文件打补丁

       常用文本处理工具 及 正则表达式详解

 


       >>>正则表达式<<<

一:什么是正则表达式?

  正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串

二:基础正则表达式(grep)

 1、grep    基本正则表达式

①功能:

    显示匹配信息所在行     

②options:

-o     只显示匹配到的行

eg:

-v     只显示未匹配到的行

-e     或

eg:grep -e  “cat”  -e  “dog”  file1   显示含有cat或dog的行

-w    匹配整个单词(精确查找)

-c     统计匹配的行数

-n     显示匹配结果的行号

-q     静默模式,不显示匹配结果

-A n  同时显示匹配到的行与它的后n行

-B n  同时显示匹配到的行与它的前n行

-C n  同时显示匹配到的行与它的前后n行

-E     =egrep

-F     =fgrep

-i      忽略字符大小写

–color=auto

 2、正则表达式中元字符分类

  •  字符匹配

    常用文本处理工具 及 正则表达式详解

  •  匹配次数

   *

  匹配字符任意次(包括0次,尽可能长的匹配)

   .*

  任意长度的任意字符

   \?

  01

    \+

  >=1

    \{n\}

  匹配n

   \{m,n\}

  匹配m-n

   \{,n\}

  <=n

   \{m,\}

  >=m

  •  位置锚定

   ^   行首锚定

   $    行尾锚定

   \<   词首锚定

   \>   词尾锚定

   \< \>

  •  分组

    ① \(string\)  同时匹配多个字符

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

     ③  \|     逻辑 “或”    

 3、egrep  拓展的正则表达式

  

字符匹配

 .         任意单个字符  

 []        指定单个字符

 [^]       补集

次数匹配

 {n}       n

 {m,n}     m-n

 *       0+

 ?        01

 +        大于等于1

位置锚定

 ^        行首

 $        行尾

 \<       词首

 \>       词尾

分组

 ()        

 \1,\2,\3…….  后向引用前面所匹配的字符串

 a|b      ab

 C|cat     Ccat

 (c|C)at    Catcat

         

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

(0)
上一篇 2017-07-30 21:38
下一篇 2017-07-30 22:12

相关推荐

  • 正则表达式及用户管理命令

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 3、取出当前系统上被用户当做其默认shell的最多的那个shell。 4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxuser.txt文件中。 6、列出/etc目录…

    2017-10-10
  • 启动和内核管理

    一、Linux组成     Linux: kernel+rootfs         kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能       &nb…

    Linux干货 2016-09-18
  • 文件系统

    文件系统 文件和目录被组织成一个单根倒置树结构 文件系统从根目录下开始,用“/”表示 文件名称区分大小写 以.开头的文件为隐藏文件   一个.表示本目录。 两个..表示根目录 路径分隔的/      路径分割为正斜线分割 文件有两类数据:        元数据:metadata …

    Linux干货 2017-05-02
  • N25-第四周博客作业

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

    Linux干货 2016-12-25
  • shell脚本编程之函数、case语句

    一、函数 调用函数前必须先定义,调用时仅使用函数名即可。 语法: function  函数名 {      函数体 } 也可表示为: 函数名 () { 函数体 } 示例:写一个脚本,判定网络内有哪些主机在线,在线的用绿色显示,不在线的用红示表示: c_net&…

    Linux干货 2015-08-24
  • Linux源程序包相关概念整理

    一、      Linux源程序包介绍 1)    linux源程序包基础 1.         遵循常用开源协议:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系统运维 2015-09-22