0806文本处理工具


———- 文件查看工具 ———-


cat:    cat [OPTION]… [FILE]…   //查看文本文件内容,一般后面跟文件名(相对路径),或者是文件名(绝对路径)

-n 加行号

-b 加行号,不给空白行加行号

-s 压缩空行,多个空行变一个空行

-T 显示tab\space

-A 显示所有控制符

-E 行尾$显示

        -v 处理Windows文本的M 和 ^      //在Linux中行尾是以$表示,而Windows文本中,行尾是以^M 表示

[root@localhost ~]# ll .bash
.bash_history  .bash_logout   .bash_profile  .bashrc        
[root@localhost ~]# ll .bashrc 
-rw-r--r--. 1 root root 176 Dec 28  2013 .bashrc
[[root@localhost ~]# cat -n .bashrc            //此处为相对路径, 加 -n  每一行行首加行号
     1	# .bashrc
     2	
     3	# User specific aliases and functions
     4	
     5	alias rm='rm -i'
     6	alias cp='cp -i'
     7	alias mv='mv -i'
     8	
     9	# Source global definitions
    10	if [ -f /etc/bashrc ]; then
    11		. /etc/bashrc
    12	fi

tac        tac [OPTION]… [FILE]…     //tac也是一个文本查看功能,功能比较简单,但显示的文本是倒序显示

[root@localhost ~]# tac .bashrc
fi
	. /etc/bashrc
if [ -f /etc/bashrc ]; then
# Source global definitions

alias mv='mv -i'
alias cp='cp -i'
alias rm='rm -i'

# User specific aliases and functions

# .bashrc

rev        rev [options] [file …]            //rev文本查看功能,但文本的每一行是都过来显示的

[root@localhost ~]# rev .bashrc
crhsab. #

snoitcnuf dna sesaila cificeps resU #

'i- mr'=mr saila
'i- pc'=pc saila
'i- vm'=vm saila

snoitinifed labolg ecruoS #
neht ;] crhsab/cte/ f- [ fi
crhsab/cte/ .	
if

分页查看文本工具

more:     more [options] file […]           //分页查看(不可向上翻)文件

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

! : ! command 可执行命令

less:                            //一页一页地查看文本,可以上下翻动,使用man手册查看命令是,就是使用了less查看命令的帮助手册

    Enter键 :下拉一行

    b 键    :向上翻一屏

    space键 :向下翻一屏

    d 键    :向下翻半屏

    w 键    :向上翻半屏

    输入!   :可以执行命令,再敲一下Enter键,继续浏览文本

    输入/   :可以在文本中根据输入的字符进行搜索

head :    head [OPTION]… [FILE]… //  看文件前n行(默认前10行)

     -n #|+#    前#行;若 -n -#显示到文本尾部倒数第n+1行

     -c #     显示前#个字符数,若 -#,文本的最后#个字符不显示出来

    -v        在显示的内容前加文本的名字

tail : tail [OPTION]… [FILE]…   //看文件后10行

-n #|-#    后#行;若 -n +#显示从文本头部第#行开始显示

-c #     指定获取后#字节

-f       监控文件变化,缺点  占用终端资源

& :      有更新就显示,不占用终端资源,后台运行

cut:   cut OPTION… [FILE]…   按列抽取文本

-b 指明分隔符,默认tab

-f FILEDS:

    #: 第#个字段

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

            #-#:连续的多个字段, 例如1-6

    混合使用: 1-3,7

-c 按字符分割

[root@localhost ~]# cat -n /etc/passwd | cut -d: -f1,3 | head    抽取/etc/passwd内容并显示行号;以:为分隔符,选取第1和3列;只显示前10行
     1  root:0
     2	bin:1
     3	daemon:2
     4	adm:3
     5	lp:4
     6	sync:5
     7	shutdown:6
     8	halt:7
     9	mail:8
    10	operator:11

paste  :  paste [OPTION]… [FILE]…      合并两个文件同行号的列到一行

paste [OPTION]… [FILE]…

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

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

paste f1 f2

paste -s f1 f2

———- 文本分析工具 ———-


wc :收集文本统计数据

wc [OPTION]… [FILE]…

    wc [OPTION]… –files0-from=F

[root@localhost testdir]# wc /etc/passwd
  55   99    2732     /etc/passwd
  行数 字节数  字符数

    使用 -l 来只计数行数

    使用 -w 来只计数单词总数

    使用 -c 来只计数字节总数

    使用 -m 来只计数字符总数

sort :文本排序

sort [OPTION]… [FILE]…

sort [OPTION]… –files0-from=F

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

-n 执行按数字大小整理;默认是则是以第一个数字在ASCII表中的大小进行排序

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

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

-t c 选项使用c做为字段界定符        与cut不同,cut以-d设置分隔符,-f指定列,要区分

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

[root@localhost ~]# sort -t: -k3 -n /etc/passwd |head       //以:为分隔符,选取第三列作数字大小(-n)进行排序;与cut不同,cut以-d设置分隔符,-f指定列,要区分
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

uniq :从输入中删除重复的前后相接的行  // 连续且完全相同方为重复

uniq [OPTION]… [FILE]…

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

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

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

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

sort userlist.txt | uniq -c

———- Linux文本处理三剑客之 grep 正则表达式与扩展正则表达式 ———-


正则表达式:


grep  :  Global search REgular expression and Print out the line.作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

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

 grep [OPTIONS] PATTERN [FILE…]

[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep "$USER" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep `whoami` /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

grep命令选项:

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

-v: 显示不能够被pattern匹配到的行;

-i: 忽略字符大小写

-n: 显示匹配的行号

-c: 统计匹配的行数

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

-q: 静默模式,不输出任何信息

-A #: after, 后#行

-B #: before, 前#行

-C #: context, 前后各#行

-e:实现多个选项间的逻辑or关系

grep –e ‘cat ’ -e ‘dog’ file

-w:整行匹配整个单词

-E:使用ERE

正则表达式:

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

 程序支持: grep, vim, less,nginx等

 分两类:

基本正则表达式: BRE

扩展正则表达式: ERE

grep -E, egrep

 正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE( Perl Compatible Regular Expressions)

 元字符分类:字符匹配、匹配次数、位置锚定、分组

 man 7 regex

grep中的通配符

字符匹配:

. : 匹配任意单个字符;

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

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

[:digit:]、 [:lower:]、 [:upper:]、 [:alpha:]、 [:alnum:]

、 [:punct:]、 [:space:]

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*:匹配前面的字符任意次,包括0次(与文本通配不同,文件通配是匹配零个或者多个字符,此处为重复次数)

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

.*:任意长度的任意字符

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

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

\{m\}:匹配前面的字符m次

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

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

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

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

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

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

^PATTERN$: 用于模式匹配整行

^$: 空行

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

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

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

\<PATTERN\>:匹配整个单词

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

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

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

实例: \(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

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

扩展正则表达式:


egrep及扩展的正则表达式 : egrep = grep -E

 egrep [OPTIONS] PATTERN [FILE…]

字符匹配:

. 任意单个字符

[] 指定范围的字符

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

次数匹配:

*:匹配前面字符任意次

?: 0或1次

+: 1次或多次

{m}:匹配m次

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

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

()

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

或者:

a|b

C|cat: C或cat

(C|c)at:Cat或cat

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

(0)
上一篇 2016-08-07 22:06
下一篇 2016-08-07 22:07

相关推荐

  • varnish

    缓存 缓存之所以能够生效是程序的运行具有局部性特征: 时间局部性:一个数据被访问过之后,可能很快会被再次访问到; 空间局部性:一个数据被访问时,其周边的数据也有可能被访问到 缓存的是热区数据 时效性: 缓存空间耗尽:LRU,最近最少使用; 过期:缓存清理 缓存命中率:hit/(hit+miss) 页面命中率:基于页面数量进行衡量 字节命中率:基于页面的体积进…

    Linux干货 2017-07-03
  • 八大排序算法

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。     当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。    快速…

    Linux干货 2015-04-07
  • 0811linux基础小记(shell编程基础)

    1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干货 2016-08-15
  • 精解局域网访问及共享(三)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/155109    上一节中的2种情况都是默认的简单共享,下面我们着重分析一下高级共享方式下的各种访问情况。毕竟这种方式用的很普遍,而且在权限…

    Linux干货 2015-03-25
  • apache服务器

    一、改变网页的默认位置 1、修改DocumentRoot和Directory,修改新的存放路径为/data/htdocs/ 2、创建/data/htdocs/index.html,注意权限问题 3、注意报错You don't have permission to access /index.html,此时去查看SElinux的状态。命令selinu…

    Linux干货 2016-10-09
  • 7月19号:计算机基础+在VMware12中安装CentOS6.8

        16号从正下暴雨的武汉来到帝都参加马哥培训班,从清河公寓亮哥开始,到宿舍另外五位室友,渐渐认识更多人,还算适应额不错。但走在北京的马路上,多少还是有些陌生,不过就如宿舍一样,来的时候脏兮兮,经过一番打扫后,干净了不少,我也会很快习惯在这边的生活,精力全放在linux上!   &nb…

    Linux干货 2016-08-05