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)
hunterhunter
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • cp和ln命令简述

    cp和软ln命令简述 cp          备注: 1.       该命令可以自动判断你所复制的是文件还是目录 2.       当源是一个文件,目标(目的…

    2017-08-19
  • 用户权限管理及课后作业

    一.权限对目录、文件的意义 文件 r 可用文件查看类工具获取文件内容 w 可以修改文件内容(包括清空) x 可执行该文件 [root@localhost testdir]# cat zzz i am fine  thank you [root@localhost testdir]…

    Linux干货 2016-08-08
  • vim编辑器使用详解

    1.vi (virtual interface)文本编辑器     文本编辑种类:     行编辑器:sed     全屏编辑器:nano vi     vim vi-improved  &…

    Linux干货 2016-08-15
  • lvs初探

    1,lvs是什么 lvs是Linux Virtual Server缩写,linux虚拟服务器,担任负载调度器(load balance)的角色,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,LVS分为两部分组成,ipvsadm管理集群服务的命令行工具,ipvs,是内核模块。由于ipvs采用基于ip负载均衡技术,所以具有很…

    Linux干货 2016-10-30
  • N22-第十周作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) (1)POST:加电自检,利用COMS里记录的配置信息检测硬件是否都工作正常 (2)Boot Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备 Grub引导程序:提供一个菜单,允许用户选择要启动的系统或不同的内核版本, 把用户选定的内…

    Linux干货 2016-10-25
  • GRUB Legacy&Trouble Shooting

    GRUB (Grand Unified Bootloader)        位于系统引导盘的MBR中的Boot Loader。        GRUB是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允…

    Linux干货 2016-09-13